Installing API, Packages and Libraries

In [ ]:
#Delete the output of this cell
%%capture  

# Install python biblio
!pip install -U -q PyDrive
!pip install plotly
!pip install cufflinks
!pip intasl colorlover
!pip install lightgbm
!pip install xgboost
!pip install lime
!pip install optuna

!pip install forestci

!pip install missingno
!pip install ipywidgets
!pip install qgrid


!pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
!jupyter contrib nbextension install --user
!jupyter nbextension enable hinterland/hinterland


# Install Linux Libraries
!apt-get install unrar
!apt-get install unzip

Import necessary Libraries

In [ ]:
# numpy and pandas for data manipulation
import io
import os
import pandas as pd
import numpy as np
import warnings
import datetime
from datetime import timedelta

# Authentification 
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
from google.colab import auth
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import google.colab
import glob

# matplotlib, plotly and seaborn for plotting
import plotly.offline as py
from plotly.offline import init_notebook_mode, iplot
from plotly.graph_objs import Contours, Histogram2dContour, Marker, Scatter
import plotly.graph_objs as go
from plotly import tools
import plotly.figure_factory as ff
import qgrid
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib

# sklearn preprocessing for dealing with categorical variables
from sklearn.preprocessing import LabelEncoder
##from sklearn import preprocessing
import cufflinks as cf
from collections import Counter


#libraries for the model
from sklearn.metrics import accuracy_score
from sklearn.model_selection import KFold
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import MinMaxScaler
from sklearn.neural_network import MLPClassifier
from xgboost import XGBClassifier
#from sklearn.impute import SimpleImputer
from sklearn import metrics
import lightgbm as lgb
import gc
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from scipy.stats import normaltest
from scipy import stats
import lime
import lime.lime_tabular

#Some Libraries configurations
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>")) # Para expandir o output do dataframe para 100%


#Import sklearn's feature selection algorithm 
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import SelectFromModel
#import featuretools as ft      #back to work again

import missingno as msno
In [ ]:
#Use the plotly API in google colab
def configure_plotly_browser_state():
  import IPython
  display(IPython.core.display.HTML('''
        <script src="/static/components/requirejs/require.js"></script>
        <script>
          requirejs.config({
            paths: {
              base: '/static/base',
              plotly: 'https://cdn.plot.ly/plotly-1.5.1.min.js?noext',
            },
          });
        </script>
        '''))
In [ ]:
#dataframe: the dictionary that you want to remove de missing columns
#limit: the percentage of missings that its allouwed
#axis 0 for index 1 to column
def remove_missing(dataframe, limit, axis):
  if axis == 1:
    dataframe = dataframe.dropna(thresh=(1-limit)*df.shape[0], axis=axis, inplace=True)
  else:
    dataframe = dataframe.dropna(thresh=(1-limit)*df.shape[1], axis=axis, inplace=True)
In [ ]:
def dummycount(dataframe):
  sum = 0
  for col in dataframe.select_dtypes(include=['object']).columns:
    unique = len(dataframe[col].unique())
    sum+= unique
    print('Quantidade de valores unicos da coluna: ',col,' : ',unique)
  print('A quantidade de colunas que sera gerada pelo get_dummies() e:', sum)
In [ ]:
# #avaliar o contrario
# import pandas as pd
# df = pd.DataFrame({'cat':['a','b','c','d'],'val':[1,2,5,10]})
# df1 = pd.get_dummies(pd.DataFrame({'cat':['a'],'val':[1]}))
# dummies_frame = pd.get_dummies(df)
# df1.reindex(columns = dummies_frame.columns, fill_value=0)

Lendo o dataset

In [112]:
train = pd.read_csv('/content/drive/MyDrive/CALPM_DATASET/train.csv', sep = ';', encoding='UTF-8')
test = pd.read_csv('/content/drive/MyDrive/CALPM_DATASET/test.csv', sep = ';', encoding='UTF-8')

Avaliando se houve erro de leitura

In [ ]:
train.head(3)
Out[ ]:
cd_ramo_atividade cd_natureza_juridica fl_optante_simples fl_matriz dt_abertura de_natureza_juridica sg_uf de_situacao dt_situacao de_motivo_situacao de_situacao_especial dt_situacao_especial dh_ultima_atualizacao nm_fonte_informacao dh_processamento de_classif_natureza_juridica de_ramo_atividade nm_segmento fl_spa fl_antt fl_veiculo vl_total_tancagem vl_total_veiculos_antt vl_total_veiculos_leves vl_total_veiculos_pesados de_validade_pgfn de_validade_fgts de_validade_inss de_optante_simples fl_validade_pgfn fl_validade_fgts fl_validade_inss qt_art vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo vl_total_tancagem_grupo vl_total_veiculos_antt_grupo vl_potenc_cons_oleo_gas vl_potenc_cons_oleo_gas_grupo qt_filial fl_optante_simei fl_indicador_financeiro sg_uf_matriz de_precisao_geolocalizacao sg_uf_abrangencia vl_total_tancagem_diesel vl_total_tancagem_etanol vl_total_tancagem_gasolina vl_total_tancagem_diesel_grupo vl_total_tancagem_etanol_grupo vl_total_tancagem_gasolina_grupo vl_potenc_cons_diesel vl_potenc_cons_etanol vl_potenc_cons_gasolina vl_potenc_cons_diesel_grupo vl_potenc_cons_etanol_grupo vl_potenc_cons_gasolina_grupo de_indicador_telefone fl_simples_irregular vl_frota de_fl_optante_simples de_fl_optante_simei de_fl_simples_irregular nm_meso_regiao nm_micro_regiao vl_total_veiculos vl_total_veiculos_grupo fl_passivel_iss qt_func_coligadas qt_func_grupo_coligadas renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id
0 6319400 2062 True True 2013-11-11 SOCIEDADE EMPRESARIA LIMITADA PA ATIVA 2013-11-11 NaN NaN NaN 2018-03-10 08:38:14.644486 RF 2018-03-10 05:38:14.644486 PRIVADO PORTAIS, PROVEDORES DE CONTEUDO E OUTROS SERVI... INFORMACAO E COMUNICACAO False False False NaN NaN NaN NaN 16/05/2017 - D7D5 624E 0B4A 5296 23/09/2017 - 2017082506243035091740 NaN OPTANTE PELO SIMPLES DESDE 01/01/2014 E NAO OP... True True NaN NaN 0 0 NaN NaN NaN NaN NaN False False PA SEM INFORMACAO NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN 0.0 NaN False NaN SIM NAO NAO SUDESTE PARAENSE MARABA NaN 0 True 0.0 0.0 1683.09 False 1 10795
1 9603304 2135 True True 2001-01-16 EMPRESARIO INDIVIDUAL MG ATIVA 2005-11-03 NaN NaN NaN 2018-01-20 21:53:19.000000 RF 2018-03-06 22:13:43.249409 PRIVADO SERVICOS DE FUNERARIAS OUTRAS ATIVIDADES DE SERVICOS False False False NaN NaN NaN NaN POSITIVA NAO CONSULTADO NaN OPTANTE PELO SIMPLES DESDE 01/01/2017 E NAO OP... True False NaN 1.0 0 0 NaN NaN NaN NaN 1.0 False False MG EXATA MG=1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN 0.0 BOA False NaN SIM NAO NAO OESTE DE MINAS FORMIGA NaN 0 True NaN NaN 3136.54 False 1 4396
2 4922101 2062 False True 2010-05-05 SOCIEDADE EMPRESARIA LIMITADA TO ATIVA 2010-05-05 NaN NaN NaN 2018-02-19 21:14:09.367476 RF 2018-02-19 18:14:09.367476 PRIVADO TRANSPORTE RODOVIARIO COLETIVO DE PASSAGEIROS,... TRANSPORTE ARMAZENAGEM E CORREIO False False True NaN NaN 0.0 1.0 25/04/2017 - E99A DD3E 8D6A 0FFF 02/12/2017 - 2017110300570300755961 NaN NAO OPTANTE PELO SIMPLES E NAO OPTANTE PELO SIMEI True True NaN NaN 1 0 NaN NaN 2.0 2.0 NaN False False TO SEM INFORMACAO NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN 0.0 NaN False 191561.0 NAO NAO NAO OCIDENTAL DO TOCANTINS MIRACEMA DO TOCANTINS 1.0 1 True 0.0 0.0 440.99 True 1 250810
In [ ]:
#Distribuicao da variavel target
configure_plotly_browser_state()
init_notebook_mode(connected=False)

data1 = [{'labels': ['0 - Inactive', '1 - Active'],
              'values': [train.ind_atividade.value_counts()[0], train.ind_atividade.value_counts()[1]],
              'type': 'pie'}]

iplot(data1)
In [ ]:
# quarentena_sms['dataEnvio']= pd.to_datetime(quarentena_sms['dataEnvio'], format='%d/%m/%Y %H:%M:%S')
# quarentena_campanhas['TMPCAM'] =  ((datetime.datetime.now() - quarentena_campanhas['DATENV']).dt.days)

Data quality

In [ ]:
df = train.copy()

Contagem de colunas e linhas

In [ ]:
df.shape
Out[ ]:
(231510, 74)

Analise de tipos de colunas

In [ ]:
df.dtypes
Out[ ]:
cd_ramo_atividade                     int64
cd_natureza_juridica                  int64
fl_optante_simples                     bool
fl_matriz                              bool
dt_abertura                          object
de_natureza_juridica                 object
sg_uf                                object
de_situacao                          object
dt_situacao                          object
de_motivo_situacao                  float64
de_situacao_especial                 object
dt_situacao_especial                 object
dh_ultima_atualizacao                object
nm_fonte_informacao                  object
dh_processamento                     object
de_classif_natureza_juridica         object
de_ramo_atividade                    object
nm_segmento                          object
fl_spa                                 bool
fl_antt                                bool
fl_veiculo                             bool
vl_total_tancagem                   float64
vl_total_veiculos_antt              float64
vl_total_veiculos_leves             float64
vl_total_veiculos_pesados           float64
de_validade_pgfn                     object
de_validade_fgts                     object
de_validade_inss                    float64
de_optante_simples                   object
fl_validade_pgfn                       bool
fl_validade_fgts                       bool
fl_validade_inss                    float64
qt_art                              float64
vl_total_veiculos_pesados_grupo       int64
vl_total_veiculos_leves_grupo         int64
vl_total_tancagem_grupo             float64
vl_total_veiculos_antt_grupo        float64
vl_potenc_cons_oleo_gas             float64
vl_potenc_cons_oleo_gas_grupo       float64
qt_filial                           float64
fl_optante_simei                       bool
fl_indicador_financeiro                bool
sg_uf_matriz                         object
de_precisao_geolocalizacao           object
sg_uf_abrangencia                    object
vl_total_tancagem_diesel            float64
vl_total_tancagem_etanol            float64
vl_total_tancagem_gasolina          float64
vl_total_tancagem_diesel_grupo      float64
vl_total_tancagem_etanol_grupo      float64
vl_total_tancagem_gasolina_grupo    float64
vl_potenc_cons_diesel               float64
vl_potenc_cons_etanol               float64
vl_potenc_cons_gasolina             float64
vl_potenc_cons_diesel_grupo         float64
vl_potenc_cons_etanol_grupo         float64
vl_potenc_cons_gasolina_grupo       float64
de_indicador_telefone                object
fl_simples_irregular                   bool
vl_frota                            float64
de_fl_optante_simples                object
de_fl_optante_simei                  object
de_fl_simples_irregular              object
nm_meso_regiao                       object
nm_micro_regiao                      object
vl_total_veiculos                   float64
vl_total_veiculos_grupo               int64
fl_passivel_iss                        bool
qt_func_coligadas                   float64
qt_func_grupo_coligadas             float64
renda_censitaria_2010               float64
fl_empresa_contato_contador            bool
ind_atividade                         int64
id                                    int64
dtype: object

Como podemos observar temos variaveis do tipo int, float, bool e object(string).

O prƩfixo do nome das variaveis traz mais detalhes sobre o tipo de dados.

fl = flag = bool(True,False)

vl, qt, cd = valor, quantidade, codigo = numeric(int,float)

nm, de, sg = nome, descricacao, sigla = object(string)

dt, dh = data, datahora = object(date,datetime)

id = identificador = numeric(int)

ind_atividade = target = numeric(int)

Missing values

In [ ]:
#Função que substitui '' por NaN
df.replace('',np.nan, inplace=True)
In [ ]:
df.columns[df.isnull().any()].tolist()
Out[ ]:
['dt_situacao',
 'de_motivo_situacao',
 'de_situacao_especial',
 'dt_situacao_especial',
 'vl_total_tancagem',
 'vl_total_veiculos_antt',
 'vl_total_veiculos_leves',
 'vl_total_veiculos_pesados',
 'de_validade_inss',
 'fl_validade_inss',
 'qt_art',
 'vl_total_tancagem_grupo',
 'vl_total_veiculos_antt_grupo',
 'vl_potenc_cons_oleo_gas',
 'vl_potenc_cons_oleo_gas_grupo',
 'qt_filial',
 'sg_uf_abrangencia',
 'vl_total_tancagem_diesel',
 'vl_total_tancagem_etanol',
 'vl_total_tancagem_gasolina',
 'vl_total_tancagem_diesel_grupo',
 'vl_total_tancagem_etanol_grupo',
 'vl_total_tancagem_gasolina_grupo',
 'vl_potenc_cons_diesel',
 'vl_potenc_cons_etanol',
 'vl_potenc_cons_gasolina',
 'vl_potenc_cons_etanol_grupo',
 'de_indicador_telefone',
 'vl_frota',
 'nm_meso_regiao',
 'nm_micro_regiao',
 'vl_total_veiculos',
 'qt_func_coligadas',
 'qt_func_grupo_coligadas',
 'renda_censitaria_2010']
In [ ]:
#Função que a apresenta as colunas que possuem pelo menos 1 valor faltando
len(df.columns[df.isnull().any()].tolist())
Out[ ]:
35

Como pode ser observado das 74 colunas do dataset 35 apresentam pelo menos 1 valor faltando.

In [ ]:
#Caso exister alguma coluna e seja necessÔrio ver a contagem de valores faltando por coluna use o código abaixo
df.info(verbose=True, null_counts=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 231510 entries, 0 to 231509
Data columns (total 74 columns):
 #   Column                            Non-Null Count   Dtype  
---  ------                            --------------   -----  
 0   cd_ramo_atividade                 231510 non-null  int64  
 1   cd_natureza_juridica              231510 non-null  int64  
 2   fl_optante_simples                231510 non-null  bool   
 3   fl_matriz                         231510 non-null  bool   
 4   dt_abertura                       231510 non-null  object 
 5   de_natureza_juridica              231510 non-null  object 
 6   sg_uf                             231510 non-null  object 
 7   de_situacao                       231510 non-null  object 
 8   dt_situacao                       231507 non-null  object 
 9   de_motivo_situacao                0 non-null       float64
 10  de_situacao_especial              75 non-null      object 
 11  dt_situacao_especial              75 non-null      object 
 12  dh_ultima_atualizacao             231510 non-null  object 
 13  nm_fonte_informacao               231510 non-null  object 
 14  dh_processamento                  231510 non-null  object 
 15  de_classif_natureza_juridica      231510 non-null  object 
 16  de_ramo_atividade                 231510 non-null  object 
 17  nm_segmento                       231510 non-null  object 
 18  fl_spa                            231510 non-null  bool   
 19  fl_antt                           231510 non-null  bool   
 20  fl_veiculo                        231510 non-null  bool   
 21  vl_total_tancagem                 332 non-null     float64
 22  vl_total_veiculos_antt            232 non-null     float64
 23  vl_total_veiculos_leves           32357 non-null   float64
 24  vl_total_veiculos_pesados         32357 non-null   float64
 25  de_validade_pgfn                  231510 non-null  object 
 26  de_validade_fgts                  231510 non-null  object 
 27  de_validade_inss                  0 non-null       float64
 28  de_optante_simples                231510 non-null  object 
 29  fl_validade_pgfn                  231510 non-null  bool   
 30  fl_validade_fgts                  231510 non-null  bool   
 31  fl_validade_inss                  0 non-null       float64
 32  qt_art                            18304 non-null   float64
 33  vl_total_veiculos_pesados_grupo   231510 non-null  int64  
 34  vl_total_veiculos_leves_grupo     231510 non-null  int64  
 35  vl_total_tancagem_grupo           1989 non-null    float64
 36  vl_total_veiculos_antt_grupo      437 non-null     float64
 37  vl_potenc_cons_oleo_gas           3950 non-null    float64
 38  vl_potenc_cons_oleo_gas_grupo     6617 non-null    float64
 39  qt_filial                         7972 non-null    float64
 40  fl_optante_simei                  231510 non-null  bool   
 41  fl_indicador_financeiro           231510 non-null  bool   
 42  sg_uf_matriz                      231510 non-null  object 
 43  de_precisao_geolocalizacao        231510 non-null  object 
 44  sg_uf_abrangencia                 7972 non-null    object 
 45  vl_total_tancagem_diesel          332 non-null     float64
 46  vl_total_tancagem_etanol          332 non-null     float64
 47  vl_total_tancagem_gasolina        332 non-null     float64
 48  vl_total_tancagem_diesel_grupo    1989 non-null    float64
 49  vl_total_tancagem_etanol_grupo    1989 non-null    float64
 50  vl_total_tancagem_gasolina_grupo  1989 non-null    float64
 51  vl_potenc_cons_diesel             325 non-null     float64
 52  vl_potenc_cons_etanol             15 non-null      float64
 53  vl_potenc_cons_gasolina           16 non-null      float64
 54  vl_potenc_cons_diesel_grupo       231510 non-null  float64
 55  vl_potenc_cons_etanol_grupo       123 non-null     float64
 56  vl_potenc_cons_gasolina_grupo     231510 non-null  float64
 57  de_indicador_telefone             34009 non-null   object 
 58  fl_simples_irregular              231510 non-null  bool   
 59  vl_frota                          22721 non-null   float64
 60  de_fl_optante_simples             231510 non-null  object 
 61  de_fl_optante_simei               231510 non-null  object 
 62  de_fl_simples_irregular           231510 non-null  object 
 63  nm_meso_regiao                    229602 non-null  object 
 64  nm_micro_regiao                   229602 non-null  object 
 65  vl_total_veiculos                 32357 non-null   float64
 66  vl_total_veiculos_grupo           231510 non-null  int64  
 67  fl_passivel_iss                   231510 non-null  bool   
 68  qt_func_coligadas                 52703 non-null   float64
 69  qt_func_grupo_coligadas           52703 non-null   float64
 70  renda_censitaria_2010             229698 non-null  float64
 71  fl_empresa_contato_contador       231510 non-null  bool   
 72  ind_atividade                     231510 non-null  int64  
 73  id                                231510 non-null  int64  
dtypes: bool(12), float64(30), int64(7), object(25)
memory usage: 112.2+ MB

Como pode ser observado dentre as colunas com valores faltando existem aglumas com mais de 30% de seus valores faltando. Essas colunas serao removidas na proxima etapa.

Data Cleaning

Para remover as colunas com mais de 30% de valores faltando sera aplicada a função remove_missing.

In [ ]:
remove_missing(df, 0.30,1)

A seguir sera verificado se ainda existem colunas com valores faltando e quais sao elas.

In [ ]:
df.columns[df.isnull().any()].tolist()
Out[ ]:
['dt_situacao', 'nm_meso_regiao', 'nm_micro_regiao', 'renda_censitaria_2010']

A seguir sao analisados quantas linhas possuem valor faltando nessas 4 colunas.

In [ ]:
len(df[df.isna().any(axis=1)])
Out[ ]:
3715

Como essa quantidade de linhas corresponde a 2% do total no primeiro momento elas serao excluidas. Apos identificar se essas colunas possuem poder preditivo, uma estrategia de substituicao de valores faltando podera ser adotada.

In [ ]:
round(len(df[df.isna().any(axis=1)])/len(df),2)
Out[ ]:
0.02

Para remover essas linhas sera utilizada novamente a funcacao remove_missing passan o parametro axis = 0 para indicar que as linhas devem ser removidas.

In [ ]:
remove_missing(df, 0,0)
In [ ]:
len(df[df.isna().any(axis=1)])
Out[ ]:
0

Como pode ser observado, não sobrou nenhuma linha com valores faltando.

Data preparation

Nesta etapa o dataset sera preparado para os algoritmos de aprendizado de maquina. Dentre as operações realizadas nessa estapa estao: Conversão de Tipos, Encoding e Engenharia de caracteristicas.

In [ ]:
df.head(3)
Out[ ]:
cd_ramo_atividade cd_natureza_juridica fl_optante_simples fl_matriz dt_abertura de_natureza_juridica sg_uf de_situacao dt_situacao dh_ultima_atualizacao nm_fonte_informacao dh_processamento de_classif_natureza_juridica de_ramo_atividade nm_segmento fl_spa fl_antt fl_veiculo de_validade_pgfn de_validade_fgts de_optante_simples fl_validade_pgfn fl_validade_fgts vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo fl_optante_simei fl_indicador_financeiro sg_uf_matriz de_precisao_geolocalizacao vl_potenc_cons_diesel_grupo vl_potenc_cons_gasolina_grupo fl_simples_irregular de_fl_optante_simples de_fl_optante_simei de_fl_simples_irregular nm_meso_regiao nm_micro_regiao vl_total_veiculos_grupo fl_passivel_iss renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id
0 6319400 2062 True True 2013-11-11 SOCIEDADE EMPRESARIA LIMITADA PA ATIVA 2013-11-11 2018-03-10 08:38:14.644486 RF 2018-03-10 05:38:14.644486 PRIVADO PORTAIS, PROVEDORES DE CONTEUDO E OUTROS SERVI... INFORMACAO E COMUNICACAO False False False 16/05/2017 - D7D5 624E 0B4A 5296 23/09/2017 - 2017082506243035091740 OPTANTE PELO SIMPLES DESDE 01/01/2014 E NAO OP... True True 0 0 False False PA SEM INFORMACAO 0.0 0.0 False SIM NAO NAO SUDESTE PARAENSE MARABA 0 True 1683.09 False 1 10795
1 9603304 2135 True True 2001-01-16 EMPRESARIO INDIVIDUAL MG ATIVA 2005-11-03 2018-01-20 21:53:19.000000 RF 2018-03-06 22:13:43.249409 PRIVADO SERVICOS DE FUNERARIAS OUTRAS ATIVIDADES DE SERVICOS False False False POSITIVA NAO CONSULTADO OPTANTE PELO SIMPLES DESDE 01/01/2017 E NAO OP... True False 0 0 False False MG EXATA 0.0 0.0 False SIM NAO NAO OESTE DE MINAS FORMIGA 0 True 3136.54 False 1 4396
2 4922101 2062 False True 2010-05-05 SOCIEDADE EMPRESARIA LIMITADA TO ATIVA 2010-05-05 2018-02-19 21:14:09.367476 RF 2018-02-19 18:14:09.367476 PRIVADO TRANSPORTE RODOVIARIO COLETIVO DE PASSAGEIROS,... TRANSPORTE ARMAZENAGEM E CORREIO False False True 25/04/2017 - E99A DD3E 8D6A 0FFF 02/12/2017 - 2017110300570300755961 NAO OPTANTE PELO SIMPLES E NAO OPTANTE PELO SIMEI True True 1 0 False False TO SEM INFORMACAO 0.0 0.0 False NAO NAO NAO OCIDENTAL DO TOCANTINS MIRACEMA DO TOCANTINS 1 True 440.99 True 1 250810

Como podemos observar as variaveis flag possuem valores(True, False). Para serem utilizados no algoritmo esses valores serao convertidos em (1,0).

In [ ]:
df.update(df.filter(regex='^fl_').astype(int))
In [ ]:
df.head(3)
Out[ ]:
cd_ramo_atividade cd_natureza_juridica fl_optante_simples fl_matriz dt_abertura de_natureza_juridica sg_uf de_situacao dt_situacao dh_ultima_atualizacao nm_fonte_informacao dh_processamento de_classif_natureza_juridica de_ramo_atividade nm_segmento fl_spa fl_antt fl_veiculo de_validade_pgfn de_validade_fgts de_optante_simples fl_validade_pgfn fl_validade_fgts vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo fl_optante_simei fl_indicador_financeiro sg_uf_matriz de_precisao_geolocalizacao vl_potenc_cons_diesel_grupo vl_potenc_cons_gasolina_grupo fl_simples_irregular de_fl_optante_simples de_fl_optante_simei de_fl_simples_irregular nm_meso_regiao nm_micro_regiao vl_total_veiculos_grupo fl_passivel_iss renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id
0 6319400 2062 1 1 2013-11-11 SOCIEDADE EMPRESARIA LIMITADA PA ATIVA 2013-11-11 2018-03-10 08:38:14.644486 RF 2018-03-10 05:38:14.644486 PRIVADO PORTAIS, PROVEDORES DE CONTEUDO E OUTROS SERVI... INFORMACAO E COMUNICACAO 0 0 0 16/05/2017 - D7D5 624E 0B4A 5296 23/09/2017 - 2017082506243035091740 OPTANTE PELO SIMPLES DESDE 01/01/2014 E NAO OP... 1 1 0 0 0 0 PA SEM INFORMACAO 0.0 0.0 0 SIM NAO NAO SUDESTE PARAENSE MARABA 0 1 1683.09 0 1 10795
1 9603304 2135 1 1 2001-01-16 EMPRESARIO INDIVIDUAL MG ATIVA 2005-11-03 2018-01-20 21:53:19.000000 RF 2018-03-06 22:13:43.249409 PRIVADO SERVICOS DE FUNERARIAS OUTRAS ATIVIDADES DE SERVICOS 0 0 0 POSITIVA NAO CONSULTADO OPTANTE PELO SIMPLES DESDE 01/01/2017 E NAO OP... 1 0 0 0 0 0 MG EXATA 0.0 0.0 0 SIM NAO NAO OESTE DE MINAS FORMIGA 0 1 3136.54 0 1 4396
2 4922101 2062 0 1 2010-05-05 SOCIEDADE EMPRESARIA LIMITADA TO ATIVA 2010-05-05 2018-02-19 21:14:09.367476 RF 2018-02-19 18:14:09.367476 PRIVADO TRANSPORTE RODOVIARIO COLETIVO DE PASSAGEIROS,... TRANSPORTE ARMAZENAGEM E CORREIO 0 0 1 25/04/2017 - E99A DD3E 8D6A 0FFF 02/12/2017 - 2017110300570300755961 NAO OPTANTE PELO SIMPLES E NAO OPTANTE PELO SIMEI 1 1 1 0 0 0 TO SEM INFORMACAO 0.0 0.0 0 NAO NAO NAO OCIDENTAL DO TOCANTINS MIRACEMA DO TOCANTINS 1 1 440.99 1 1 250810

O proximo passo seria corrigir as colunas do com prefixo dt e dh para serem reconhecidas como tipo datetime. Porém como esse não é um modelo de serie temporal, e como não serÔ necessÔrio fazer ordenações por data essas colunas serão utilizadas para gerar novas variaveis na etapa de engenharia de características.

Feature Engineering

A seguir as variaveis dt_abertura e dh_processamento são utilizadas para gerar o tempo de abertura da empresa em anos.

In [ ]:
df['ano_abertura']=df['dt_abertura'].str.split('-').str[0]
In [ ]:
df['ano_processamento']=df['dh_processamento'].str.split('-').str[0]
In [ ]:
df['tempo_empresa']= df['ano_processamento'].astype(int) - df['ano_abertura'].astype(int)
In [ ]:
df.head(3)
Out[ ]:
cd_ramo_atividade cd_natureza_juridica fl_optante_simples fl_matriz dt_abertura de_natureza_juridica sg_uf de_situacao dt_situacao dh_ultima_atualizacao nm_fonte_informacao dh_processamento de_classif_natureza_juridica de_ramo_atividade nm_segmento fl_spa fl_antt fl_veiculo de_validade_pgfn de_validade_fgts de_optante_simples fl_validade_pgfn fl_validade_fgts vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo fl_optante_simei fl_indicador_financeiro sg_uf_matriz de_precisao_geolocalizacao vl_potenc_cons_diesel_grupo vl_potenc_cons_gasolina_grupo fl_simples_irregular de_fl_optante_simples de_fl_optante_simei de_fl_simples_irregular nm_meso_regiao nm_micro_regiao vl_total_veiculos_grupo fl_passivel_iss renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id ano_abertura ano_processamento tempo_empresa
0 6319400 2062 1 1 2013-11-11 SOCIEDADE EMPRESARIA LIMITADA PA ATIVA 2013-11-11 2018-03-10 08:38:14.644486 RF 2018-03-10 05:38:14.644486 PRIVADO PORTAIS, PROVEDORES DE CONTEUDO E OUTROS SERVI... INFORMACAO E COMUNICACAO 0 0 0 16/05/2017 - D7D5 624E 0B4A 5296 23/09/2017 - 2017082506243035091740 OPTANTE PELO SIMPLES DESDE 01/01/2014 E NAO OP... 1 1 0 0 0 0 PA SEM INFORMACAO 0.0 0.0 0 SIM NAO NAO SUDESTE PARAENSE MARABA 0 1 1683.09 0 1 10795 2013 2018 5
1 9603304 2135 1 1 2001-01-16 EMPRESARIO INDIVIDUAL MG ATIVA 2005-11-03 2018-01-20 21:53:19.000000 RF 2018-03-06 22:13:43.249409 PRIVADO SERVICOS DE FUNERARIAS OUTRAS ATIVIDADES DE SERVICOS 0 0 0 POSITIVA NAO CONSULTADO OPTANTE PELO SIMPLES DESDE 01/01/2017 E NAO OP... 1 0 0 0 0 0 MG EXATA 0.0 0.0 0 SIM NAO NAO OESTE DE MINAS FORMIGA 0 1 3136.54 0 1 4396 2001 2018 17
2 4922101 2062 0 1 2010-05-05 SOCIEDADE EMPRESARIA LIMITADA TO ATIVA 2010-05-05 2018-02-19 21:14:09.367476 RF 2018-02-19 18:14:09.367476 PRIVADO TRANSPORTE RODOVIARIO COLETIVO DE PASSAGEIROS,... TRANSPORTE ARMAZENAGEM E CORREIO 0 0 1 25/04/2017 - E99A DD3E 8D6A 0FFF 02/12/2017 - 2017110300570300755961 NAO OPTANTE PELO SIMPLES E NAO OPTANTE PELO SIMEI 1 1 1 0 0 0 TO SEM INFORMACAO 0.0 0.0 0 NAO NAO NAO OCIDENTAL DO TOCANTINS MIRACEMA DO TOCANTINS 1 1 440.99 1 1 250810 2010 2018 8

Como podemos observar o dataset agora possuí a variavel tempo_empresa que representa o tempo de abertura da empresa em anos no momento do processamento da base. Essa variravel ajudarÔ a testa a hipótese de que a maior parte das empresas acapa falindo e deixando de operar nos primeiros anos de abertura.

In [ ]:
df.dtypes
Out[ ]:
cd_ramo_atividade                    int64
cd_natureza_juridica                 int64
fl_optante_simples                   int64
fl_matriz                            int64
dt_abertura                         object
de_natureza_juridica                object
sg_uf                               object
de_situacao                         object
dt_situacao                         object
dh_ultima_atualizacao               object
nm_fonte_informacao                 object
dh_processamento                    object
de_classif_natureza_juridica        object
de_ramo_atividade                   object
nm_segmento                         object
fl_spa                               int64
fl_antt                              int64
fl_veiculo                           int64
de_validade_pgfn                    object
de_validade_fgts                    object
de_optante_simples                  object
fl_validade_pgfn                     int64
fl_validade_fgts                     int64
vl_total_veiculos_pesados_grupo      int64
vl_total_veiculos_leves_grupo        int64
fl_optante_simei                     int64
fl_indicador_financeiro              int64
sg_uf_matriz                        object
de_precisao_geolocalizacao          object
vl_potenc_cons_diesel_grupo        float64
vl_potenc_cons_gasolina_grupo      float64
fl_simples_irregular                 int64
de_fl_optante_simples               object
de_fl_optante_simei                 object
de_fl_simples_irregular             object
nm_meso_regiao                      object
nm_micro_regiao                     object
vl_total_veiculos_grupo              int64
fl_passivel_iss                      int64
renda_censitaria_2010              float64
fl_empresa_contato_contador          int64
ind_atividade                        int64
id                                   int64
ano_abertura                        object
ano_processamento                   object
tempo_empresa                        int64
dtype: object

Como as variaveis do tipo data não serão utilizados elas serão removidas do dataset.

In [ ]:
df.drop(['ano_abertura','ano_processamento','dt_abertura', 'dt_situacao','dh_ultima_atualizacao', 'dh_processamento'],axis=1, inplace=True)

A seguir as variaveis categoricas serão transformada em variaveis dummy, onde cada categoria irÔ se tornar uma nova coluna no dataset. Antes de fazer a transformação serão avaliadas as quantidade de categorias em cada variavel. Para essa tarefa sera utilizada a funcao dummycount()

In [ ]:
dummycount(df)
Quantidade de valores unicos da coluna:  de_natureza_juridica  :  58
Quantidade de valores unicos da coluna:  sg_uf  :  26
Quantidade de valores unicos da coluna:  de_situacao  :  1
Quantidade de valores unicos da coluna:  nm_fonte_informacao  :  1
Quantidade de valores unicos da coluna:  de_classif_natureza_juridica  :  3
Quantidade de valores unicos da coluna:  de_ramo_atividade  :  1221
Quantidade de valores unicos da coluna:  nm_segmento  :  21
Quantidade de valores unicos da coluna:  de_validade_pgfn  :  83052
Quantidade de valores unicos da coluna:  de_validade_fgts  :  134886
Quantidade de valores unicos da coluna:  de_optante_simples  :  6318
Quantidade de valores unicos da coluna:  sg_uf_matriz  :  27
Quantidade de valores unicos da coluna:  de_precisao_geolocalizacao  :  3
Quantidade de valores unicos da coluna:  de_fl_optante_simples  :  3
Quantidade de valores unicos da coluna:  de_fl_optante_simei  :  3
Quantidade de valores unicos da coluna:  de_fl_simples_irregular  :  3
Quantidade de valores unicos da coluna:  nm_meso_regiao  :  135
Quantidade de valores unicos da coluna:  nm_micro_regiao  :  540
A quantidade de colunas que sera gerada pelo get_dummies() e: 226301

Como podemos observar existem variveis que possuem mais de 150 categorias diferentes. Para fazer a transformação serão utilizadas somente variaveis com menos de 150 categorias.

In [ ]:
df.drop(['de_ramo_atividade','de_situacao','nm_fonte_informacao','nm_micro_regiao','de_validade_pgfn','de_validade_fgts','de_optante_simples'],axis=1, inplace=True)
In [ ]:
dummycount(df)
Quantidade de valores unicos da coluna:  de_natureza_juridica  :  58
Quantidade de valores unicos da coluna:  sg_uf  :  26
Quantidade de valores unicos da coluna:  de_classif_natureza_juridica  :  3
Quantidade de valores unicos da coluna:  nm_segmento  :  21
Quantidade de valores unicos da coluna:  sg_uf_matriz  :  27
Quantidade de valores unicos da coluna:  de_precisao_geolocalizacao  :  3
Quantidade de valores unicos da coluna:  de_fl_optante_simples  :  3
Quantidade de valores unicos da coluna:  de_fl_optante_simei  :  3
Quantidade de valores unicos da coluna:  de_fl_simples_irregular  :  3
Quantidade de valores unicos da coluna:  nm_meso_regiao  :  135
A quantidade de colunas que sera gerada pelo get_dummies() e: 282

Como podemos observar serão geradas 282 novas colunas dummy.

In [ ]:
dummy_features = pd.get_dummies(df[df.select_dtypes(include=['object']).columns],dtype=int)
In [ ]:
dummy_features.shape
Out[ ]:
(227795, 282)

Como podemos observar foram geradas as 282 variaveis dummy.

In [ ]:
dummy_features.head(3)
Out[ ]:
de_natureza_juridica_ASSOCIACAO PRIVADA de_natureza_juridica_AUTARQUIA ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_AUTARQUIA FEDERAL de_natureza_juridica_AUTARQUIA MUNICIPAL de_natureza_juridica_CLUBE FUNDO DE INVESTIMENTO de_natureza_juridica_COMISSAO DE CONCILIACAO PREVIA de_natureza_juridica_COMUNIDADE INDIGENA de_natureza_juridica_CONDOMINIO EDILICIO de_natureza_juridica_CONSORCIO DE EMPREGADORES de_natureza_juridica_CONSORCIO DE SOCIEDADES de_natureza_juridica_CONSORCIO PUBDE DIREITO PUB ASS PUB de_natureza_juridica_COOPERATIVA de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA EMPRESARIA de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA SIMPLES de_natureza_juridica_EMPRESA INDIVIDUAL IMOBILIARIA de_natureza_juridica_EMPRESA PUBLICA de_natureza_juridica_EMPRESARIO INDIVIDUAL de_natureza_juridica_ENTIDADE DE MEDIACAO E ARBITRAGEM de_natureza_juridica_ENTIDADE SINDICAL de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE FUNDACAO OU ASSOCIACAO ESTRANGEIRAS de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE SOCIEDADE ESTRANGEIRA de_natureza_juridica_FUNDACAO PRIVADA de_natureza_juridica_FUNDACAO PUB DE DIREITO PUB EST OU DO DF de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO ESTADUAL OU DF de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO MUNICIPAL de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUB MUNICIPAL de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUBFEDERAL de_natureza_juridica_FUNDO PUBLICO de_natureza_juridica_MUNICIPIO de_natureza_juridica_ORGANIZACAO INTERNACIONAL EXTRATERRITORIAIS de_natureza_juridica_ORGANIZACAO RELIGIOSA de_natureza_juridica_ORGANIZACAO SOCIAL OS de_natureza_juridica_ORGAO DE DIRECAO LOCAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO DE DIRECAO NACIONAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO DE DIRECAO REGIONAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO PUBLICO AUTONOMO ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_ORGAO PUBLICO AUTONOMO MUNICIPAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO MUNICIPAL de_natureza_juridica_ORGAO PUBLICO DO PODER JUDICIARIO ESTADUAL de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO MUNICIPAL de_natureza_juridica_PRODUTOR RURAL PESSOA FISICA de_natureza_juridica_REPRESENTACAO DIPLOMATICA ESTRANGEIRA de_natureza_juridica_SERVICO NOTARIAL E REGISTRAL CARTORIO de_natureza_juridica_SERVICO SOCIAL AUTONOMO de_natureza_juridica_SOCIEDADE ANONIMA ABERTA de_natureza_juridica_SOCIEDADE ANONIMA FECHADA de_natureza_juridica_SOCIEDADE DE ECONOMIA MISTA de_natureza_juridica_SOCIEDADE EM CONTA DE PARTICIPACAO de_natureza_juridica_SOCIEDADE EMPRESARIA EM COMANDITA SIMPLES de_natureza_juridica_SOCIEDADE EMPRESARIA EM NOME COLETIVO de_natureza_juridica_SOCIEDADE EMPRESARIA LIMITADA de_natureza_juridica_SOCIEDADE SIMPLES EM NOME COLETIVO de_natureza_juridica_SOCIEDADE SIMPLES LIMITADA de_natureza_juridica_SOCIEDADE SIMPLES PURA de_natureza_juridica_SOCIEDADE UNIPESSOAL DE ADVOCACIA sg_uf_AC sg_uf_AL sg_uf_AM sg_uf_AP sg_uf_BA sg_uf_CE sg_uf_DF sg_uf_ES sg_uf_GO sg_uf_MA sg_uf_MG sg_uf_MS sg_uf_MT sg_uf_PA sg_uf_PB sg_uf_PE sg_uf_PI sg_uf_PR sg_uf_RJ sg_uf_RN sg_uf_RR sg_uf_RS sg_uf_SC sg_uf_SE sg_uf_SP sg_uf_TO de_classif_natureza_juridica_MISTA de_classif_natureza_juridica_PRIVADO de_classif_natureza_juridica_PUBLICO nm_segmento_ADMINISTRACAO PUBLICA DEFESA E SEGURIDADE SOCIAL nm_segmento_AGRICULTURA PECUARIA PRODUCAO FLORESTAL PESCA E AQUICULTURA nm_segmento_AGUA ESGOTO ATIVIDADES DE GESTAO DE RESIDUOS E DESCONTAMINACAO nm_segmento_ALOJAMENTO E ALIMENTACAO nm_segmento_ARTES CULTURA ESPORTE E RECREACAO nm_segmento_ATIVIDADES ADMINISTRATIVAS E SERVICOS COMPLEMENTARES nm_segmento_ATIVIDADES FINANCEIRAS DE SEGUROS E SERVICOS RELACIONADOS nm_segmento_ATIVIDADES IMOBILIARIAS nm_segmento_ATIVIDADES PROFISSIONAIS CIENTIFICAS E TECNICAS nm_segmento_COMERCIO; REPARACAO DE VEICULOS AUTOMOTORES E MOTOCICLETAS nm_segmento_CONSTRUCAO nm_segmento_EDUCACAO nm_segmento_ELETRICIDADE E GAS nm_segmento_INDUSTRIAS DE TRANSFORMACAO nm_segmento_INDUSTRIAS EXTRATIVAS nm_segmento_INFORMACAO E COMUNICACAO nm_segmento_ORGANISMOS INTERNACIONAIS E OUTRAS INSTITUICOES EXTRATERRITORIAIS nm_segmento_OUTRAS ATIVIDADES DE SERVICOS nm_segmento_SAUDE HUMANA E SERVICOS SOCIAIS nm_segmento_SERVICOS DOMESTICOS nm_segmento_TRANSPORTE ARMAZENAGEM E CORREIO sg_uf_matriz_AC sg_uf_matriz_AL sg_uf_matriz_AM sg_uf_matriz_AP sg_uf_matriz_BA sg_uf_matriz_CE sg_uf_matriz_DF sg_uf_matriz_ES sg_uf_matriz_GO sg_uf_matriz_MA sg_uf_matriz_MG sg_uf_matriz_MS sg_uf_matriz_MT sg_uf_matriz_PA sg_uf_matriz_PB sg_uf_matriz_PE sg_uf_matriz_PI sg_uf_matriz_PR sg_uf_matriz_RJ sg_uf_matriz_RN sg_uf_matriz_RO sg_uf_matriz_RR sg_uf_matriz_RS sg_uf_matriz_SC sg_uf_matriz_SE sg_uf_matriz_SP sg_uf_matriz_TO de_precisao_geolocalizacao_APROXIMADA de_precisao_geolocalizacao_EXATA de_precisao_geolocalizacao_SEM INFORMACAO de_fl_optante_simples_NAO de_fl_optante_simples_SEM INFORMACAO de_fl_optante_simples_SIM de_fl_optante_simei_NAO de_fl_optante_simei_SEM INFORMACAO de_fl_optante_simei_SIM de_fl_simples_irregular_NAO de_fl_simples_irregular_SEM INFORMACAO de_fl_simples_irregular_SIM nm_meso_regiao_AGRESTE ALAGOANO nm_meso_regiao_AGRESTE PARAIBANO nm_meso_regiao_AGRESTE PERNAMBUCANO nm_meso_regiao_AGRESTE POTIGUAR nm_meso_regiao_AGRESTE SERGIPANO nm_meso_regiao_ARACATUBA nm_meso_regiao_ARARAQUARA nm_meso_regiao_ASSIS nm_meso_regiao_BAIXADAS nm_meso_regiao_BAIXO AMAZONAS nm_meso_regiao_BAURU nm_meso_regiao_BORBOREMA nm_meso_regiao_CAMPINAS nm_meso_regiao_CAMPO DAS VERTENTES nm_meso_regiao_CENTRAL ESPIRITO SANTENSE nm_meso_regiao_CENTRAL MINEIRA nm_meso_regiao_CENTRAL POTIGUAR nm_meso_regiao_CENTRO AMAZONENSE nm_meso_regiao_CENTRO FLUMINENSE nm_meso_regiao_CENTRO GOIANO nm_meso_regiao_CENTRO MARANHENSE nm_meso_regiao_CENTRO NORTE BAIANO nm_meso_regiao_CENTRO NORTE DE MATO GROSSO DO SUL nm_meso_regiao_CENTRO NORTE PIAUIENSE nm_meso_regiao_CENTRO OCIDENTAL PARANAENSE nm_meso_regiao_CENTRO OCIDENTAL RIO GRANDENSE nm_meso_regiao_CENTRO ORIENTAL PARANAENSE nm_meso_regiao_CENTRO ORIENTAL RIO GRANDENSE nm_meso_regiao_CENTRO SUL BAIANO nm_meso_regiao_CENTRO SUL CEARENSE nm_meso_regiao_CENTRO SUL MATO GROSSENSE nm_meso_regiao_CENTRO SUL PARANAENSE nm_meso_regiao_DISTRITO FEDERAL nm_meso_regiao_EXTREMO OESTE BAIANO nm_meso_regiao_GRANDE FLORIANOPOLIS nm_meso_regiao_ITAPETININGA nm_meso_regiao_JAGUARIBE nm_meso_regiao_JEQUITINHONHA nm_meso_regiao_LESTE ALAGOANO nm_meso_regiao_LESTE DE MATO GROSSO DO SUL nm_meso_regiao_LESTE GOIANO nm_meso_regiao_LESTE MARANHENSE nm_meso_regiao_LESTE POTIGUAR nm_meso_regiao_LESTE SERGIPANO nm_meso_regiao_LITORAL NORTE ESPIRITO SANTENSE nm_meso_regiao_LITORAL SUL PAULISTA nm_meso_regiao_MACRO METROPOLITANA PAULISTA nm_meso_regiao_MARAJO nm_meso_regiao_MARILIA nm_meso_regiao_MATA PARAIBANA nm_meso_regiao_MATA PERNAMBUCANA nm_meso_regiao_METROPOLITANA DE BELEM nm_meso_regiao_METROPOLITANA DE BELO HORIZONTE nm_meso_regiao_METROPOLITANA DE CURITIBA nm_meso_regiao_METROPOLITANA DE FORTALEZA nm_meso_regiao_METROPOLITANA DE PORTO ALEGRE nm_meso_regiao_METROPOLITANA DE RECIFE nm_meso_regiao_METROPOLITANA DE SALVADOR nm_meso_regiao_METROPOLITANA DE SAO PAULO nm_meso_regiao_METROPOLITANA DO RIO DE JANEIRO nm_meso_regiao_NORDESTE BAIANO nm_meso_regiao_NORDESTE MATO GROSSENSE nm_meso_regiao_NORDESTE PARAENSE nm_meso_regiao_NORDESTE RIO GRANDENSE nm_meso_regiao_NOROESTE CEARENSE nm_meso_regiao_NOROESTE DE MINAS nm_meso_regiao_NOROESTE ESPIRITO SANTENSE nm_meso_regiao_NOROESTE FLUMINENSE nm_meso_regiao_NOROESTE GOIANO nm_meso_regiao_NOROESTE PARANAENSE nm_meso_regiao_NOROESTE RIO GRANDENSE nm_meso_regiao_NORTE AMAZONENSE nm_meso_regiao_NORTE CATARINENSE nm_meso_regiao_NORTE CEARENSE nm_meso_regiao_NORTE CENTRAL PARANAENSE nm_meso_regiao_NORTE DE MINAS nm_meso_regiao_NORTE DE RORAIMA nm_meso_regiao_NORTE DO AMAPA nm_meso_regiao_NORTE FLUMINENSE nm_meso_regiao_NORTE GOIANO nm_meso_regiao_NORTE MARANHENSE nm_meso_regiao_NORTE MATO GROSSENSE nm_meso_regiao_NORTE PIAUIENSE nm_meso_regiao_NORTE PIONEIRO PARANAENSE nm_meso_regiao_OCIDENTAL DO TOCANTINS nm_meso_regiao_OESTE CATARINENSE nm_meso_regiao_OESTE DE MINAS nm_meso_regiao_OESTE MARANHENSE nm_meso_regiao_OESTE PARANAENSE nm_meso_regiao_OESTE POTIGUAR nm_meso_regiao_ORIENTAL DO TOCANTINS nm_meso_regiao_PANTANAIS SUL MATO GROSSENSE nm_meso_regiao_PIRACICABA nm_meso_regiao_PRESIDENTE PRUDENTE nm_meso_regiao_RIBEIRAO PRETO nm_meso_regiao_SAO FRANCISCO PERNAMBUCANO nm_meso_regiao_SAO JOSE DO RIO PRETO nm_meso_regiao_SERRANA nm_meso_regiao_SERTAO ALAGOANO nm_meso_regiao_SERTAO PARAIBANO nm_meso_regiao_SERTAO PERNAMBUCANO nm_meso_regiao_SERTAO SERGIPANO nm_meso_regiao_SERTOES CEARENSES nm_meso_regiao_SUDESTE MATO GROSSENSE nm_meso_regiao_SUDESTE PARAENSE nm_meso_regiao_SUDESTE PARANAENSE nm_meso_regiao_SUDESTE PIAUIENSE nm_meso_regiao_SUDESTE RIO GRANDENSE nm_meso_regiao_SUDOESTE AMAZONENSE nm_meso_regiao_SUDOESTE DE MATO GROSSO DO SUL nm_meso_regiao_SUDOESTE MATO GROSSENSE nm_meso_regiao_SUDOESTE PARAENSE nm_meso_regiao_SUDOESTE PARANAENSE nm_meso_regiao_SUDOESTE PIAUIENSE nm_meso_regiao_SUDOESTE RIO GRANDENSE nm_meso_regiao_SUL AMAZONENSE nm_meso_regiao_SUL BAIANO nm_meso_regiao_SUL CATARINENSE nm_meso_regiao_SUL CEARENSE nm_meso_regiao_SUL DE RORAIMA nm_meso_regiao_SUL DO AMAPA nm_meso_regiao_SUL ESPIRITO SANTENSE nm_meso_regiao_SUL FLUMINENSE nm_meso_regiao_SUL GOIANO nm_meso_regiao_SUL MARANHENSE nm_meso_regiao_SUL SUDOESTE DE MINAS nm_meso_regiao_TRIANGULO MINEIRO ALTO PARANAIBA nm_meso_regiao_VALE DO ACRE nm_meso_regiao_VALE DO ITAJAI nm_meso_regiao_VALE DO JURUA nm_meso_regiao_VALE DO MUCURI nm_meso_regiao_VALE DO PARAIBA PAULISTA nm_meso_regiao_VALE DO RIO DOCE nm_meso_regiao_VALE SAO FRANCISCANO DA BAHIA nm_meso_regiao_ZONA DA MATA
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A seguir as varivaveis categoricas sao removidas do dataset para que as variaveis dummy sejam incluidas.

In [ ]:
df_teste = df.select_dtypes(exclude=['object'])
In [ ]:
df_teste.dtypes
Out[ ]:
cd_ramo_atividade                    int64
cd_natureza_juridica                 int64
fl_optante_simples                   int64
fl_matriz                            int64
fl_spa                               int64
fl_antt                              int64
fl_veiculo                           int64
fl_validade_pgfn                     int64
fl_validade_fgts                     int64
vl_total_veiculos_pesados_grupo      int64
vl_total_veiculos_leves_grupo        int64
fl_optante_simei                     int64
fl_indicador_financeiro              int64
vl_potenc_cons_diesel_grupo        float64
vl_potenc_cons_gasolina_grupo      float64
fl_simples_irregular                 int64
vl_total_veiculos_grupo              int64
fl_passivel_iss                      int64
renda_censitaria_2010              float64
fl_empresa_contato_contador          int64
ind_atividade                        int64
id                                   int64
tempo_empresa                        int64
dtype: object

Como podemos observar no dataset so restaram variaveis numericas(int,float). Entretanto, as variaveis cd_ramo_atividade, cd_natureza_juridica representam codigos cujas descrições jÔ foram tratadas na etapa anterior. Portanto essas variaveis serão removidas do dataset.

In [ ]:
df_teste.drop(['cd_ramo_atividade','cd_natureza_juridica'],axis=1, inplace=True)
In [ ]:
df_teste.head(3)
Out[ ]:
fl_optante_simples fl_matriz fl_spa fl_antt fl_veiculo fl_validade_pgfn fl_validade_fgts vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo fl_optante_simei fl_indicador_financeiro vl_potenc_cons_diesel_grupo vl_potenc_cons_gasolina_grupo fl_simples_irregular vl_total_veiculos_grupo fl_passivel_iss renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id tempo_empresa
0 1 1 0 0 0 1 1 0 0 0 0 0.0 0.0 0 0 1 1683.09 0 1 10795 5
1 1 1 0 0 0 1 0 0 0 0 0 0.0 0.0 0 0 1 3136.54 0 1 4396 17
2 0 1 0 0 1 1 1 1 0 0 0 0.0 0.0 0 1 1 440.99 1 1 250810 8

A seguir as variaveis dummy sao adicionadas ao dataset

In [ ]:
df_final = pd.concat([df_teste,dummy_features], axis= 1)
In [ ]:
df_final.head(3)
Out[ ]:
fl_optante_simples fl_matriz fl_spa fl_antt fl_veiculo fl_validade_pgfn fl_validade_fgts vl_total_veiculos_pesados_grupo vl_total_veiculos_leves_grupo fl_optante_simei fl_indicador_financeiro vl_potenc_cons_diesel_grupo vl_potenc_cons_gasolina_grupo fl_simples_irregular vl_total_veiculos_grupo fl_passivel_iss renda_censitaria_2010 fl_empresa_contato_contador ind_atividade id tempo_empresa de_natureza_juridica_ASSOCIACAO PRIVADA de_natureza_juridica_AUTARQUIA ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_AUTARQUIA FEDERAL de_natureza_juridica_AUTARQUIA MUNICIPAL de_natureza_juridica_CLUBE FUNDO DE INVESTIMENTO de_natureza_juridica_COMISSAO DE CONCILIACAO PREVIA de_natureza_juridica_COMUNIDADE INDIGENA de_natureza_juridica_CONDOMINIO EDILICIO de_natureza_juridica_CONSORCIO DE EMPREGADORES de_natureza_juridica_CONSORCIO DE SOCIEDADES de_natureza_juridica_CONSORCIO PUBDE DIREITO PUB ASS PUB de_natureza_juridica_COOPERATIVA de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA EMPRESARIA de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA SIMPLES de_natureza_juridica_EMPRESA INDIVIDUAL IMOBILIARIA de_natureza_juridica_EMPRESA PUBLICA de_natureza_juridica_EMPRESARIO INDIVIDUAL de_natureza_juridica_ENTIDADE DE MEDIACAO E ARBITRAGEM de_natureza_juridica_ENTIDADE SINDICAL de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE FUNDACAO OU ASSOCIACAO ESTRANGEIRAS de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE SOCIEDADE ESTRANGEIRA de_natureza_juridica_FUNDACAO PRIVADA de_natureza_juridica_FUNDACAO PUB DE DIREITO PUB EST OU DO DF de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO ESTADUAL OU DF de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO MUNICIPAL de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUB MUNICIPAL de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUBFEDERAL de_natureza_juridica_FUNDO PUBLICO de_natureza_juridica_MUNICIPIO de_natureza_juridica_ORGANIZACAO INTERNACIONAL EXTRATERRITORIAIS de_natureza_juridica_ORGANIZACAO RELIGIOSA de_natureza_juridica_ORGANIZACAO SOCIAL OS de_natureza_juridica_ORGAO DE DIRECAO LOCAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO DE DIRECAO NACIONAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO DE DIRECAO REGIONAL DE PARTIDO POLITICO de_natureza_juridica_ORGAO PUBLICO AUTONOMO ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_ORGAO PUBLICO AUTONOMO MUNICIPAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO ESTADUAL OU DO DISTRITO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO MUNICIPAL de_natureza_juridica_ORGAO PUBLICO DO PODER JUDICIARIO ESTADUAL de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO FEDERAL de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO MUNICIPAL de_natureza_juridica_PRODUTOR RURAL PESSOA FISICA de_natureza_juridica_REPRESENTACAO DIPLOMATICA ESTRANGEIRA de_natureza_juridica_SERVICO NOTARIAL E REGISTRAL CARTORIO de_natureza_juridica_SERVICO SOCIAL AUTONOMO de_natureza_juridica_SOCIEDADE ANONIMA ABERTA de_natureza_juridica_SOCIEDADE ANONIMA FECHADA de_natureza_juridica_SOCIEDADE DE ECONOMIA MISTA de_natureza_juridica_SOCIEDADE EM CONTA DE PARTICIPACAO de_natureza_juridica_SOCIEDADE EMPRESARIA EM COMANDITA SIMPLES de_natureza_juridica_SOCIEDADE EMPRESARIA EM NOME COLETIVO de_natureza_juridica_SOCIEDADE EMPRESARIA LIMITADA de_natureza_juridica_SOCIEDADE SIMPLES EM NOME COLETIVO de_natureza_juridica_SOCIEDADE SIMPLES LIMITADA de_natureza_juridica_SOCIEDADE SIMPLES PURA de_natureza_juridica_SOCIEDADE UNIPESSOAL DE ADVOCACIA sg_uf_AC sg_uf_AL sg_uf_AM sg_uf_AP sg_uf_BA sg_uf_CE sg_uf_DF sg_uf_ES sg_uf_GO sg_uf_MA sg_uf_MG sg_uf_MS sg_uf_MT sg_uf_PA sg_uf_PB sg_uf_PE sg_uf_PI sg_uf_PR sg_uf_RJ sg_uf_RN sg_uf_RR sg_uf_RS sg_uf_SC sg_uf_SE sg_uf_SP sg_uf_TO de_classif_natureza_juridica_MISTA de_classif_natureza_juridica_PRIVADO de_classif_natureza_juridica_PUBLICO nm_segmento_ADMINISTRACAO PUBLICA DEFESA E SEGURIDADE SOCIAL nm_segmento_AGRICULTURA PECUARIA PRODUCAO FLORESTAL PESCA E AQUICULTURA nm_segmento_AGUA ESGOTO ATIVIDADES DE GESTAO DE RESIDUOS E DESCONTAMINACAO nm_segmento_ALOJAMENTO E ALIMENTACAO nm_segmento_ARTES CULTURA ESPORTE E RECREACAO nm_segmento_ATIVIDADES ADMINISTRATIVAS E SERVICOS COMPLEMENTARES nm_segmento_ATIVIDADES FINANCEIRAS DE SEGUROS E SERVICOS RELACIONADOS nm_segmento_ATIVIDADES IMOBILIARIAS nm_segmento_ATIVIDADES PROFISSIONAIS CIENTIFICAS E TECNICAS nm_segmento_COMERCIO; REPARACAO DE VEICULOS AUTOMOTORES E MOTOCICLETAS nm_segmento_CONSTRUCAO nm_segmento_EDUCACAO nm_segmento_ELETRICIDADE E GAS nm_segmento_INDUSTRIAS DE TRANSFORMACAO nm_segmento_INDUSTRIAS EXTRATIVAS nm_segmento_INFORMACAO E COMUNICACAO nm_segmento_ORGANISMOS INTERNACIONAIS E OUTRAS INSTITUICOES EXTRATERRITORIAIS nm_segmento_OUTRAS ATIVIDADES DE SERVICOS nm_segmento_SAUDE HUMANA E SERVICOS SOCIAIS nm_segmento_SERVICOS DOMESTICOS nm_segmento_TRANSPORTE ARMAZENAGEM E CORREIO sg_uf_matriz_AC sg_uf_matriz_AL sg_uf_matriz_AM sg_uf_matriz_AP sg_uf_matriz_BA sg_uf_matriz_CE sg_uf_matriz_DF sg_uf_matriz_ES sg_uf_matriz_GO sg_uf_matriz_MA sg_uf_matriz_MG sg_uf_matriz_MS sg_uf_matriz_MT sg_uf_matriz_PA sg_uf_matriz_PB sg_uf_matriz_PE sg_uf_matriz_PI sg_uf_matriz_PR sg_uf_matriz_RJ sg_uf_matriz_RN sg_uf_matriz_RO sg_uf_matriz_RR sg_uf_matriz_RS sg_uf_matriz_SC sg_uf_matriz_SE sg_uf_matriz_SP sg_uf_matriz_TO de_precisao_geolocalizacao_APROXIMADA de_precisao_geolocalizacao_EXATA de_precisao_geolocalizacao_SEM INFORMACAO de_fl_optante_simples_NAO de_fl_optante_simples_SEM INFORMACAO de_fl_optante_simples_SIM de_fl_optante_simei_NAO de_fl_optante_simei_SEM INFORMACAO de_fl_optante_simei_SIM de_fl_simples_irregular_NAO de_fl_simples_irregular_SEM INFORMACAO de_fl_simples_irregular_SIM nm_meso_regiao_AGRESTE ALAGOANO nm_meso_regiao_AGRESTE PARAIBANO nm_meso_regiao_AGRESTE PERNAMBUCANO nm_meso_regiao_AGRESTE POTIGUAR nm_meso_regiao_AGRESTE SERGIPANO nm_meso_regiao_ARACATUBA nm_meso_regiao_ARARAQUARA nm_meso_regiao_ASSIS nm_meso_regiao_BAIXADAS nm_meso_regiao_BAIXO AMAZONAS nm_meso_regiao_BAURU nm_meso_regiao_BORBOREMA nm_meso_regiao_CAMPINAS nm_meso_regiao_CAMPO DAS VERTENTES nm_meso_regiao_CENTRAL ESPIRITO SANTENSE nm_meso_regiao_CENTRAL MINEIRA nm_meso_regiao_CENTRAL POTIGUAR nm_meso_regiao_CENTRO AMAZONENSE nm_meso_regiao_CENTRO FLUMINENSE nm_meso_regiao_CENTRO GOIANO nm_meso_regiao_CENTRO MARANHENSE nm_meso_regiao_CENTRO NORTE BAIANO nm_meso_regiao_CENTRO NORTE DE MATO GROSSO DO SUL nm_meso_regiao_CENTRO NORTE PIAUIENSE nm_meso_regiao_CENTRO OCIDENTAL PARANAENSE nm_meso_regiao_CENTRO OCIDENTAL RIO GRANDENSE nm_meso_regiao_CENTRO ORIENTAL PARANAENSE nm_meso_regiao_CENTRO ORIENTAL RIO GRANDENSE nm_meso_regiao_CENTRO SUL BAIANO nm_meso_regiao_CENTRO SUL CEARENSE nm_meso_regiao_CENTRO SUL MATO GROSSENSE nm_meso_regiao_CENTRO SUL PARANAENSE nm_meso_regiao_DISTRITO FEDERAL nm_meso_regiao_EXTREMO OESTE BAIANO nm_meso_regiao_GRANDE FLORIANOPOLIS nm_meso_regiao_ITAPETININGA nm_meso_regiao_JAGUARIBE nm_meso_regiao_JEQUITINHONHA nm_meso_regiao_LESTE ALAGOANO nm_meso_regiao_LESTE DE MATO GROSSO DO SUL nm_meso_regiao_LESTE GOIANO nm_meso_regiao_LESTE MARANHENSE nm_meso_regiao_LESTE POTIGUAR nm_meso_regiao_LESTE SERGIPANO nm_meso_regiao_LITORAL NORTE ESPIRITO SANTENSE nm_meso_regiao_LITORAL SUL PAULISTA nm_meso_regiao_MACRO METROPOLITANA PAULISTA nm_meso_regiao_MARAJO nm_meso_regiao_MARILIA nm_meso_regiao_MATA PARAIBANA nm_meso_regiao_MATA PERNAMBUCANA nm_meso_regiao_METROPOLITANA DE BELEM nm_meso_regiao_METROPOLITANA DE BELO HORIZONTE nm_meso_regiao_METROPOLITANA DE CURITIBA nm_meso_regiao_METROPOLITANA DE FORTALEZA nm_meso_regiao_METROPOLITANA DE PORTO ALEGRE nm_meso_regiao_METROPOLITANA DE RECIFE nm_meso_regiao_METROPOLITANA DE SALVADOR nm_meso_regiao_METROPOLITANA DE SAO PAULO nm_meso_regiao_METROPOLITANA DO RIO DE JANEIRO nm_meso_regiao_NORDESTE BAIANO nm_meso_regiao_NORDESTE MATO GROSSENSE nm_meso_regiao_NORDESTE PARAENSE nm_meso_regiao_NORDESTE RIO GRANDENSE nm_meso_regiao_NOROESTE CEARENSE nm_meso_regiao_NOROESTE DE MINAS nm_meso_regiao_NOROESTE ESPIRITO SANTENSE nm_meso_regiao_NOROESTE FLUMINENSE nm_meso_regiao_NOROESTE GOIANO nm_meso_regiao_NOROESTE PARANAENSE nm_meso_regiao_NOROESTE RIO GRANDENSE nm_meso_regiao_NORTE AMAZONENSE nm_meso_regiao_NORTE CATARINENSE nm_meso_regiao_NORTE CEARENSE nm_meso_regiao_NORTE CENTRAL PARANAENSE nm_meso_regiao_NORTE DE MINAS nm_meso_regiao_NORTE DE RORAIMA nm_meso_regiao_NORTE DO AMAPA nm_meso_regiao_NORTE FLUMINENSE nm_meso_regiao_NORTE GOIANO nm_meso_regiao_NORTE MARANHENSE nm_meso_regiao_NORTE MATO GROSSENSE nm_meso_regiao_NORTE PIAUIENSE nm_meso_regiao_NORTE PIONEIRO PARANAENSE nm_meso_regiao_OCIDENTAL DO TOCANTINS nm_meso_regiao_OESTE CATARINENSE nm_meso_regiao_OESTE DE MINAS nm_meso_regiao_OESTE MARANHENSE nm_meso_regiao_OESTE PARANAENSE nm_meso_regiao_OESTE POTIGUAR nm_meso_regiao_ORIENTAL DO TOCANTINS nm_meso_regiao_PANTANAIS SUL MATO GROSSENSE nm_meso_regiao_PIRACICABA nm_meso_regiao_PRESIDENTE PRUDENTE nm_meso_regiao_RIBEIRAO PRETO nm_meso_regiao_SAO FRANCISCO PERNAMBUCANO nm_meso_regiao_SAO JOSE DO RIO PRETO nm_meso_regiao_SERRANA nm_meso_regiao_SERTAO ALAGOANO nm_meso_regiao_SERTAO PARAIBANO nm_meso_regiao_SERTAO PERNAMBUCANO nm_meso_regiao_SERTAO SERGIPANO nm_meso_regiao_SERTOES CEARENSES nm_meso_regiao_SUDESTE MATO GROSSENSE nm_meso_regiao_SUDESTE PARAENSE nm_meso_regiao_SUDESTE PARANAENSE nm_meso_regiao_SUDESTE PIAUIENSE nm_meso_regiao_SUDESTE RIO GRANDENSE nm_meso_regiao_SUDOESTE AMAZONENSE nm_meso_regiao_SUDOESTE DE MATO GROSSO DO SUL nm_meso_regiao_SUDOESTE MATO GROSSENSE nm_meso_regiao_SUDOESTE PARAENSE nm_meso_regiao_SUDOESTE PARANAENSE nm_meso_regiao_SUDOESTE PIAUIENSE nm_meso_regiao_SUDOESTE RIO GRANDENSE nm_meso_regiao_SUL AMAZONENSE nm_meso_regiao_SUL BAIANO nm_meso_regiao_SUL CATARINENSE nm_meso_regiao_SUL CEARENSE nm_meso_regiao_SUL DE RORAIMA nm_meso_regiao_SUL DO AMAPA nm_meso_regiao_SUL ESPIRITO SANTENSE nm_meso_regiao_SUL FLUMINENSE nm_meso_regiao_SUL GOIANO nm_meso_regiao_SUL MARANHENSE nm_meso_regiao_SUL SUDOESTE DE MINAS nm_meso_regiao_TRIANGULO MINEIRO ALTO PARANAIBA nm_meso_regiao_VALE DO ACRE nm_meso_regiao_VALE DO ITAJAI nm_meso_regiao_VALE DO JURUA nm_meso_regiao_VALE DO MUCURI nm_meso_regiao_VALE DO PARAIBA PAULISTA nm_meso_regiao_VALE DO RIO DOCE nm_meso_regiao_VALE SAO FRANCISCANO DA BAHIA nm_meso_regiao_ZONA DA MATA
0 1 1 0 0 0 1 1 0 0 0 0 0.0 0.0 0 0 1 1683.09 0 1 10795 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 1 0 0 0 0 0 0.0 0.0 0 0 1 3136.54 0 1 4396 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 1 0 0 1 1 1 1 0 0 0 0.0 0.0 0 1 1 440.99 1 1 250810 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
In [ ]:
df_final.shape
Out[ ]:
(227795, 303)

A seguir a coluna identificadora: id sera separada e armazenada em um dataframe. Como ela não serÔ utilizada no modelo ela podera ser resgatada posteriormente.

In [ ]:
df_final_id = df_final['id'].copy()
df_final.drop(['id'],axis=1, inplace=True)
In [ ]:
df_final.shape
Out[ ]:
(227795, 302)
In [ ]:
df_final.shape
Out[ ]:
(227795, 302)

A seguir a coluna ind_atividade sera renomada para TARGET para facilitar a separação das outras variaveis.

In [ ]:
df_final.rename(columns={'ind_atividade':'TARGET'}, inplace=True)
In [ ]:
df_final.dtypes
Out[ ]:
fl_optante_simples                                                                               int64
fl_matriz                                                                                        int64
fl_spa                                                                                           int64
fl_antt                                                                                          int64
fl_veiculo                                                                                       int64
fl_validade_pgfn                                                                                 int64
fl_validade_fgts                                                                                 int64
vl_total_veiculos_pesados_grupo                                                                  int64
vl_total_veiculos_leves_grupo                                                                    int64
fl_optante_simei                                                                                 int64
fl_indicador_financeiro                                                                          int64
vl_potenc_cons_diesel_grupo                                                                    float64
vl_potenc_cons_gasolina_grupo                                                                  float64
fl_simples_irregular                                                                             int64
vl_total_veiculos_grupo                                                                          int64
fl_passivel_iss                                                                                  int64
renda_censitaria_2010                                                                          float64
fl_empresa_contato_contador                                                                      int64
TARGET                                                                                           int64
tempo_empresa                                                                                    int64
de_natureza_juridica_ASSOCIACAO PRIVADA                                                          int64
de_natureza_juridica_AUTARQUIA ESTADUAL OU DO DISTRITO FEDERAL                                   int64
de_natureza_juridica_AUTARQUIA FEDERAL                                                           int64
de_natureza_juridica_AUTARQUIA MUNICIPAL                                                         int64
de_natureza_juridica_CLUBE FUNDO DE INVESTIMENTO                                                 int64
de_natureza_juridica_COMISSAO DE CONCILIACAO PREVIA                                              int64
de_natureza_juridica_COMUNIDADE INDIGENA                                                         int64
de_natureza_juridica_CONDOMINIO EDILICIO                                                         int64
de_natureza_juridica_CONSORCIO DE EMPREGADORES                                                   int64
de_natureza_juridica_CONSORCIO DE SOCIEDADES                                                     int64
de_natureza_juridica_CONSORCIO PUBDE DIREITO PUB ASS PUB                                         int64
de_natureza_juridica_COOPERATIVA                                                                 int64
de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA EMPRESARIA      int64
de_natureza_juridica_EMPRESA INDIVIDUAL DE RESPONSABILIDADE LIMITADA DE NATUREZA SIMPLES         int64
de_natureza_juridica_EMPRESA INDIVIDUAL IMOBILIARIA                                              int64
de_natureza_juridica_EMPRESA PUBLICA                                                             int64
de_natureza_juridica_EMPRESARIO INDIVIDUAL                                                       int64
de_natureza_juridica_ENTIDADE DE MEDIACAO E ARBITRAGEM                                           int64
de_natureza_juridica_ENTIDADE SINDICAL                                                           int64
de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE FUNDACAO OU ASSOCIACAO ESTRANGEIRAS            int64
de_natureza_juridica_ESTABELECIMENTO NO BRASIL DE SOCIEDADE ESTRANGEIRA                          int64
de_natureza_juridica_FUNDACAO PRIVADA                                                            int64
de_natureza_juridica_FUNDACAO PUB DE DIREITO PUB EST OU DO DF                                    int64
de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO ESTADUAL OU DF                          int64
de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PRIVADO MUNICIPAL                               int64
de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUB MUNICIPAL                                   int64
de_natureza_juridica_FUNDACAO PUBLICA DE DIREITO PUBFEDERAL                                      int64
de_natureza_juridica_FUNDO PUBLICO                                                               int64
de_natureza_juridica_MUNICIPIO                                                                   int64
de_natureza_juridica_ORGANIZACAO INTERNACIONAL EXTRATERRITORIAIS                                 int64
de_natureza_juridica_ORGANIZACAO RELIGIOSA                                                       int64
de_natureza_juridica_ORGANIZACAO SOCIAL OS                                                       int64
de_natureza_juridica_ORGAO DE DIRECAO LOCAL DE PARTIDO POLITICO                                  int64
de_natureza_juridica_ORGAO DE DIRECAO NACIONAL DE PARTIDO POLITICO                               int64
de_natureza_juridica_ORGAO DE DIRECAO REGIONAL DE PARTIDO POLITICO                               int64
de_natureza_juridica_ORGAO PUBLICO AUTONOMO ESTADUAL OU DO DISTRITO FEDERAL                      int64
de_natureza_juridica_ORGAO PUBLICO AUTONOMO MUNICIPAL                                            int64
de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO ESTADUAL OU DO DISTRITO FEDERAL            int64
de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO FEDERAL                                    int64
de_natureza_juridica_ORGAO PUBLICO DO PODER EXECUTIVO MUNICIPAL                                  int64
de_natureza_juridica_ORGAO PUBLICO DO PODER JUDICIARIO ESTADUAL                                  int64
de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO FEDERAL                                  int64
de_natureza_juridica_ORGAO PUBLICO DO PODER LEGISLATIVO MUNICIPAL                                int64
de_natureza_juridica_PRODUTOR RURAL PESSOA FISICA                                                int64
de_natureza_juridica_REPRESENTACAO DIPLOMATICA ESTRANGEIRA                                       int64
de_natureza_juridica_SERVICO NOTARIAL E REGISTRAL CARTORIO                                       int64
de_natureza_juridica_SERVICO SOCIAL AUTONOMO                                                     int64
de_natureza_juridica_SOCIEDADE ANONIMA ABERTA                                                    int64
de_natureza_juridica_SOCIEDADE ANONIMA FECHADA                                                   int64
de_natureza_juridica_SOCIEDADE DE ECONOMIA MISTA                                                 int64
de_natureza_juridica_SOCIEDADE EM CONTA DE PARTICIPACAO                                          int64
de_natureza_juridica_SOCIEDADE EMPRESARIA EM COMANDITA SIMPLES                                   int64
de_natureza_juridica_SOCIEDADE EMPRESARIA EM NOME COLETIVO                                       int64
de_natureza_juridica_SOCIEDADE EMPRESARIA LIMITADA                                               int64
de_natureza_juridica_SOCIEDADE SIMPLES EM NOME COLETIVO                                          int64
de_natureza_juridica_SOCIEDADE SIMPLES LIMITADA                                                  int64
de_natureza_juridica_SOCIEDADE SIMPLES PURA                                                      int64
de_natureza_juridica_SOCIEDADE UNIPESSOAL DE ADVOCACIA                                           int64
sg_uf_AC                                                                                         int64
sg_uf_AL                                                                                         int64
sg_uf_AM                                                                                         int64
sg_uf_AP                                                                                         int64
sg_uf_BA                                                                                         int64
sg_uf_CE                                                                                         int64
sg_uf_DF                                                                                         int64
sg_uf_ES                                                                                         int64
sg_uf_GO                                                                                         int64
sg_uf_MA                                                                                         int64
sg_uf_MG                                                                                         int64
sg_uf_MS                                                                                         int64
sg_uf_MT                                                                                         int64
sg_uf_PA                                                                                         int64
sg_uf_PB                                                                                         int64
sg_uf_PE                                                                                         int64
sg_uf_PI                                                                                         int64
sg_uf_PR                                                                                         int64
sg_uf_RJ                                                                                         int64
sg_uf_RN                                                                                         int64
sg_uf_RR                                                                                         int64
sg_uf_RS                                                                                         int64
sg_uf_SC                                                                                         int64
sg_uf_SE                                                                                         int64
sg_uf_SP                                                                                         int64
sg_uf_TO                                                                                         int64
de_classif_natureza_juridica_MISTA                                                               int64
de_classif_natureza_juridica_PRIVADO                                                             int64
de_classif_natureza_juridica_PUBLICO                                                             int64
nm_segmento_ADMINISTRACAO PUBLICA DEFESA E SEGURIDADE SOCIAL                                     int64
nm_segmento_AGRICULTURA PECUARIA PRODUCAO FLORESTAL PESCA E AQUICULTURA                          int64
nm_segmento_AGUA ESGOTO ATIVIDADES DE GESTAO DE RESIDUOS E DESCONTAMINACAO                       int64
nm_segmento_ALOJAMENTO E ALIMENTACAO                                                             int64
nm_segmento_ARTES CULTURA ESPORTE E RECREACAO                                                    int64
nm_segmento_ATIVIDADES ADMINISTRATIVAS E SERVICOS COMPLEMENTARES                                 int64
nm_segmento_ATIVIDADES FINANCEIRAS DE SEGUROS E SERVICOS RELACIONADOS                            int64
nm_segmento_ATIVIDADES IMOBILIARIAS                                                              int64
nm_segmento_ATIVIDADES PROFISSIONAIS CIENTIFICAS E TECNICAS                                      int64
nm_segmento_COMERCIO; REPARACAO DE VEICULOS AUTOMOTORES E MOTOCICLETAS                           int64
nm_segmento_CONSTRUCAO                                                                           int64
nm_segmento_EDUCACAO                                                                             int64
nm_segmento_ELETRICIDADE E GAS                                                                   int64
nm_segmento_INDUSTRIAS DE TRANSFORMACAO                                                          int64
nm_segmento_INDUSTRIAS EXTRATIVAS                                                                int64
nm_segmento_INFORMACAO E COMUNICACAO                                                             int64
nm_segmento_ORGANISMOS INTERNACIONAIS E OUTRAS INSTITUICOES EXTRATERRITORIAIS                    int64
nm_segmento_OUTRAS ATIVIDADES DE SERVICOS                                                        int64
nm_segmento_SAUDE HUMANA E SERVICOS SOCIAIS                                                      int64
nm_segmento_SERVICOS DOMESTICOS                                                                  int64
nm_segmento_TRANSPORTE ARMAZENAGEM E CORREIO                                                     int64
sg_uf_matriz_AC                                                                                  int64
sg_uf_matriz_AL                                                                                  int64
sg_uf_matriz_AM                                                                                  int64
sg_uf_matriz_AP                                                                                  int64
sg_uf_matriz_BA                                                                                  int64
sg_uf_matriz_CE                                                                                  int64
sg_uf_matriz_DF                                                                                  int64
sg_uf_matriz_ES                                                                                  int64
sg_uf_matriz_GO                                                                                  int64
sg_uf_matriz_MA                                                                                  int64
sg_uf_matriz_MG                                                                                  int64
sg_uf_matriz_MS                                                                                  int64
sg_uf_matriz_MT                                                                                  int64
sg_uf_matriz_PA                                                                                  int64
sg_uf_matriz_PB                                                                                  int64
sg_uf_matriz_PE                                                                                  int64
sg_uf_matriz_PI                                                                                  int64
sg_uf_matriz_PR                                                                                  int64
sg_uf_matriz_RJ                                                                                  int64
sg_uf_matriz_RN                                                                                  int64
sg_uf_matriz_RO                                                                                  int64
sg_uf_matriz_RR                                                                                  int64
sg_uf_matriz_RS                                                                                  int64
sg_uf_matriz_SC                                                                                  int64
sg_uf_matriz_SE                                                                                  int64
sg_uf_matriz_SP                                                                                  int64
sg_uf_matriz_TO                                                                                  int64
de_precisao_geolocalizacao_APROXIMADA                                                            int64
de_precisao_geolocalizacao_EXATA                                                                 int64
de_precisao_geolocalizacao_SEM INFORMACAO                                                        int64
de_fl_optante_simples_NAO                                                                        int64
de_fl_optante_simples_SEM INFORMACAO                                                             int64
de_fl_optante_simples_SIM                                                                        int64
de_fl_optante_simei_NAO                                                                          int64
de_fl_optante_simei_SEM INFORMACAO                                                               int64
de_fl_optante_simei_SIM                                                                          int64
de_fl_simples_irregular_NAO                                                                      int64
de_fl_simples_irregular_SEM INFORMACAO                                                           int64
de_fl_simples_irregular_SIM                                                                      int64
nm_meso_regiao_AGRESTE ALAGOANO                                                                  int64
nm_meso_regiao_AGRESTE PARAIBANO                                                                 int64
nm_meso_regiao_AGRESTE PERNAMBUCANO                                                              int64
nm_meso_regiao_AGRESTE POTIGUAR                                                                  int64
nm_meso_regiao_AGRESTE SERGIPANO                                                                 int64
nm_meso_regiao_ARACATUBA                                                                         int64
nm_meso_regiao_ARARAQUARA                                                                        int64
nm_meso_regiao_ASSIS                                                                             int64
nm_meso_regiao_BAIXADAS                                                                          int64
nm_meso_regiao_BAIXO AMAZONAS                                                                    int64
nm_meso_regiao_BAURU                                                                             int64
nm_meso_regiao_BORBOREMA                                                                         int64
nm_meso_regiao_CAMPINAS                                                                          int64
nm_meso_regiao_CAMPO DAS VERTENTES                                                               int64
nm_meso_regiao_CENTRAL ESPIRITO SANTENSE                                                         int64
nm_meso_regiao_CENTRAL MINEIRA                                                                   int64
nm_meso_regiao_CENTRAL POTIGUAR                                                                  int64
nm_meso_regiao_CENTRO AMAZONENSE                                                                 int64
nm_meso_regiao_CENTRO FLUMINENSE                                                                 int64
nm_meso_regiao_CENTRO GOIANO                                                                     int64
nm_meso_regiao_CENTRO MARANHENSE                                                                 int64
nm_meso_regiao_CENTRO NORTE BAIANO                                                               int64
nm_meso_regiao_CENTRO NORTE DE MATO GROSSO DO SUL                                                int64
nm_meso_regiao_CENTRO NORTE PIAUIENSE                                                            int64
nm_meso_regiao_CENTRO OCIDENTAL PARANAENSE                                                       int64
nm_meso_regiao_CENTRO OCIDENTAL RIO GRANDENSE                                                    int64
nm_meso_regiao_CENTRO ORIENTAL PARANAENSE                                                        int64
nm_meso_regiao_CENTRO ORIENTAL RIO GRANDENSE                                                     int64
nm_meso_regiao_CENTRO SUL BAIANO                                                                 int64
nm_meso_regiao_CENTRO SUL CEARENSE                                                               int64
nm_meso_regiao_CENTRO SUL MATO GROSSENSE                                                         int64
nm_meso_regiao_CENTRO SUL PARANAENSE                                                             int64
nm_meso_regiao_DISTRITO FEDERAL                                                                  int64
nm_meso_regiao_EXTREMO OESTE BAIANO                                                              int64
nm_meso_regiao_GRANDE FLORIANOPOLIS                                                              int64
nm_meso_regiao_ITAPETININGA                                                                      int64
nm_meso_regiao_JAGUARIBE                                                                         int64
nm_meso_regiao_JEQUITINHONHA                                                                     int64
nm_meso_regiao_LESTE ALAGOANO                                                                    int64
nm_meso_regiao_LESTE DE MATO GROSSO DO SUL                                                       int64
nm_meso_regiao_LESTE GOIANO                                                                      int64
nm_meso_regiao_LESTE MARANHENSE                                                                  int64
nm_meso_regiao_LESTE POTIGUAR                                                                    int64
nm_meso_regiao_LESTE SERGIPANO                                                                   int64
nm_meso_regiao_LITORAL NORTE ESPIRITO SANTENSE                                                   int64
nm_meso_regiao_LITORAL SUL PAULISTA                                                              int64
nm_meso_regiao_MACRO METROPOLITANA PAULISTA                                                      int64
nm_meso_regiao_MARAJO                                                                            int64
nm_meso_regiao_MARILIA                                                                           int64
nm_meso_regiao_MATA PARAIBANA                                                                    int64
nm_meso_regiao_MATA PERNAMBUCANA                                                                 int64
nm_meso_regiao_METROPOLITANA DE BELEM                                                            int64
nm_meso_regiao_METROPOLITANA DE BELO HORIZONTE                                                   int64
nm_meso_regiao_METROPOLITANA DE CURITIBA                                                         int64
nm_meso_regiao_METROPOLITANA DE FORTALEZA                                                        int64
nm_meso_regiao_METROPOLITANA DE PORTO ALEGRE                                                     int64
nm_meso_regiao_METROPOLITANA DE RECIFE                                                           int64
nm_meso_regiao_METROPOLITANA DE SALVADOR                                                         int64
nm_meso_regiao_METROPOLITANA DE SAO PAULO                                                        int64
nm_meso_regiao_METROPOLITANA DO RIO DE JANEIRO                                                   int64
nm_meso_regiao_NORDESTE BAIANO                                                                   int64
nm_meso_regiao_NORDESTE MATO GROSSENSE                                                           int64
nm_meso_regiao_NORDESTE PARAENSE                                                                 int64
nm_meso_regiao_NORDESTE RIO GRANDENSE                                                            int64
nm_meso_regiao_NOROESTE CEARENSE                                                                 int64
nm_meso_regiao_NOROESTE DE MINAS                                                                 int64
nm_meso_regiao_NOROESTE ESPIRITO SANTENSE                                                        int64
nm_meso_regiao_NOROESTE FLUMINENSE                                                               int64
nm_meso_regiao_NOROESTE GOIANO                                                                   int64
nm_meso_regiao_NOROESTE PARANAENSE                                                               int64
nm_meso_regiao_NOROESTE RIO GRANDENSE                                                            int64
nm_meso_regiao_NORTE AMAZONENSE                                                                  int64
nm_meso_regiao_NORTE CATARINENSE                                                                 int64
nm_meso_regiao_NORTE CEARENSE                                                                    int64
nm_meso_regiao_NORTE CENTRAL PARANAENSE                                                          int64
nm_meso_regiao_NORTE DE MINAS                                                                    int64
nm_meso_regiao_NORTE DE RORAIMA                                                                  int64
nm_meso_regiao_NORTE DO AMAPA                                                                    int64
nm_meso_regiao_NORTE FLUMINENSE                                                                  int64
nm_meso_regiao_NORTE GOIANO                                                                      int64
nm_meso_regiao_NORTE MARANHENSE                                                                  int64
nm_meso_regiao_NORTE MATO GROSSENSE                                                              int64
nm_meso_regiao_NORTE PIAUIENSE                                                                   int64
nm_meso_regiao_NORTE PIONEIRO PARANAENSE                                                         int64
nm_meso_regiao_OCIDENTAL DO TOCANTINS                                                            int64
nm_meso_regiao_OESTE CATARINENSE                                                                 int64
nm_meso_regiao_OESTE DE MINAS                                                                    int64
nm_meso_regiao_OESTE MARANHENSE                                                                  int64
nm_meso_regiao_OESTE PARANAENSE                                                                  int64
nm_meso_regiao_OESTE POTIGUAR                                                                    int64
nm_meso_regiao_ORIENTAL DO TOCANTINS                                                             int64
nm_meso_regiao_PANTANAIS SUL MATO GROSSENSE                                                      int64
nm_meso_regiao_PIRACICABA                                                                        int64
nm_meso_regiao_PRESIDENTE PRUDENTE                                                               int64
nm_meso_regiao_RIBEIRAO PRETO                                                                    int64
nm_meso_regiao_SAO FRANCISCO PERNAMBUCANO                                                        int64
nm_meso_regiao_SAO JOSE DO RIO PRETO                                                             int64
nm_meso_regiao_SERRANA                                                                           int64
nm_meso_regiao_SERTAO ALAGOANO                                                                   int64
nm_meso_regiao_SERTAO PARAIBANO                                                                  int64
nm_meso_regiao_SERTAO PERNAMBUCANO                                                               int64
nm_meso_regiao_SERTAO SERGIPANO                                                                  int64
nm_meso_regiao_SERTOES CEARENSES                                                                 int64
nm_meso_regiao_SUDESTE MATO GROSSENSE                                                            int64
nm_meso_regiao_SUDESTE PARAENSE                                                                  int64
nm_meso_regiao_SUDESTE PARANAENSE                                                                int64
nm_meso_regiao_SUDESTE PIAUIENSE                                                                 int64
nm_meso_regiao_SUDESTE RIO GRANDENSE                                                             int64
nm_meso_regiao_SUDOESTE AMAZONENSE                                                               int64
nm_meso_regiao_SUDOESTE DE MATO GROSSO DO SUL                                                    int64
nm_meso_regiao_SUDOESTE MATO GROSSENSE                                                           int64
nm_meso_regiao_SUDOESTE PARAENSE                                                                 int64
nm_meso_regiao_SUDOESTE PARANAENSE                                                               int64
nm_meso_regiao_SUDOESTE PIAUIENSE                                                                int64
nm_meso_regiao_SUDOESTE RIO GRANDENSE                                                            int64
nm_meso_regiao_SUL AMAZONENSE                                                                    int64
nm_meso_regiao_SUL BAIANO                                                                        int64
nm_meso_regiao_SUL CATARINENSE                                                                   int64
nm_meso_regiao_SUL CEARENSE                                                                      int64
nm_meso_regiao_SUL DE RORAIMA                                                                    int64
nm_meso_regiao_SUL DO AMAPA                                                                      int64
nm_meso_regiao_SUL ESPIRITO SANTENSE                                                             int64
nm_meso_regiao_SUL FLUMINENSE                                                                    int64
nm_meso_regiao_SUL GOIANO                                                                        int64
nm_meso_regiao_SUL MARANHENSE                                                                    int64
nm_meso_regiao_SUL SUDOESTE DE MINAS                                                             int64
nm_meso_regiao_TRIANGULO MINEIRO ALTO PARANAIBA                                                  int64
nm_meso_regiao_VALE DO ACRE                                                                      int64
nm_meso_regiao_VALE DO ITAJAI                                                                    int64
nm_meso_regiao_VALE DO JURUA                                                                     int64
nm_meso_regiao_VALE DO MUCURI                                                                    int64
nm_meso_regiao_VALE DO PARAIBA PAULISTA                                                          int64
nm_meso_regiao_VALE DO RIO DOCE                                                                  int64
nm_meso_regiao_VALE SAO FRANCISCANO DA BAHIA                                                     int64
nm_meso_regiao_ZONA DA MATA                                                                      int64
dtype: object
In [ ]:
dataset_train = df_final.copy()

Modeling

Separating predictors from target

In [ ]:
x = dataset_train[dataset_train.columns[~dataset_train.columns.isin(['TARGET'])]]
y =  dataset_train[['TARGET']]

Normalizing

In [ ]:
normalization = True
In [ ]:
scaler = MinMaxScaler()
scaled = pd.DataFrame(scaler.fit_transform(dataset_train))
scaled.columns =dataset_train.columns
In [ ]:
x_scaled = scaled[scaled.columns[~scaled.columns.isin(['TARGET'])]]
y_scaled = scaled[['TARGET']]

K-Folding

In [ ]:
warnings.filterwarnings('ignore')


#Extracting labels and features for training the model
if (normalization == True):
  features = x_scaled
  labels = y_scaled
else:
  features = x
  labels = y
    
    
 
#Extract feature names
feature_names = list(features.columns)

# Convert to np arrays
#features = np.array(features)
#test_features = np.array(test_features)

# Create the kfold object
k=5
k_fold = KFold(n_splits = k, shuffle = True, random_state = 50)

# Empty array for feature importances
feature_importance_values = np.zeros(len(feature_names))

# Empty array for test predictions
#test_predictions = np.zeros(test_features.shape[0])

# Empty array for out of fold validation predictions
out_of_fold = np.zeros(features.shape[0])
out_of_fold_clf = np.zeros(features.shape[0])
out_of_fold_xgb = np.zeros(features.shape[0])
out_of_fold_neural = np.zeros(features.shape[0])

# Lists for recording validation and training scores
valid_scores = []
#train_scores = []
clf_valid_scores = []
#clf_train_scores = []
xgb_valid_scores = []
neural_valid_scores = []




# Iterate through each fold
for train_indices, valid_indices in k_fold.split(features):

    # Training data for the fold
    train_features, train_labels = features.iloc[train_indices], labels.iloc[train_indices]
    # Validation data for the fold
    valid_features, valid_labels = features.iloc[valid_indices], labels.iloc[valid_indices]
    
    #Creating the models
    lgbm = lgb.LGBMClassifier()
    clf = RandomForestClassifier()
    rede_neural = MLPClassifier()
    xgb = XGBClassifier()

    #Training the models
    lgbm.fit(train_features,train_labels)
    clf.fit(train_features,train_labels)
    rede_neural.fit(train_features,train_labels)
    xgb.fit(train_features,train_labels)
    
    #Out of fold validation    
    out_of_fold[valid_indices] = lgbm.predict_proba(valid_features)[:, 1]
    out_of_fold_clf[valid_indices] = clf.predict_proba(valid_features)[:, 1]
    out_of_fold_neural[valid_indices] = rede_neural.predict_proba(valid_features)[:, 1]
    out_of_fold_xgb[valid_indices] = xgb.predict_proba(valid_features)[:, 1]
    

    y_pred_en = lgbm.predict_proba(valid_features)
    fpr2, tpr2, thresholds = metrics.roc_curve(valid_labels, y_pred_en[:,1], pos_label=1)
    valid_score = metrics.auc(fpr2, tpr2)
    
    y_pred_en = clf.predict_proba(valid_features)
    fpr1, tpr1, thresholds = metrics.roc_curve(valid_labels, y_pred_en[:,1], pos_label=1)
    clf_valid_score = metrics.auc(fpr1, tpr1)
    
    y_pred_en = rede_neural.predict_proba(valid_features)
    fpr, tpr, thresholds = metrics.roc_curve(valid_labels, y_pred_en[:,1], pos_label=1)
    rede_neural_valid_score = metrics.auc(fpr, tpr)
    
    y_pred_en = xgb.predict_proba(valid_features)
    fpr3, tpr3, thresholds = metrics.roc_curve(valid_labels, y_pred_en[:,1], pos_label=1)
    xgb_valid_score = metrics.auc(fpr3, tpr3)


    valid_scores.append(valid_score)
    #train_scores.append(train_score)
    clf_valid_scores.append(clf_valid_score) 
    #clf_train_scores.append(clf_train_score)
    neural_valid_scores.append(rede_neural_valid_score)
    xgb_valid_scores.append(xgb_valid_score)

    # Clean up memory
    gc.enable()
    #del lgbm, train_features, valid_features
    gc.collect()

# Make the submission dataframe
#submission = pd.DataFrame({'SK_ID_CURR': test_ids, 'TARGET': test_predictions})



# Overall validation score
valid_auc = roc_auc_score(labels, out_of_fold)
valid_auc_clf = roc_auc_score(labels, out_of_fold_clf)
valid_auc_neural = roc_auc_score(labels, out_of_fold_neural)
valid_auc_xgb = roc_auc_score(labels, out_of_fold_xgb)

# Add the overall scores to the metrics
valid_scores.append(valid_auc)
#train_scores.append(np.mean(train_scores))
clf_valid_scores.append(valid_auc_clf)
#clf_train_scores.append(np.mean(clf_train_scores))
neural_valid_scores.append(valid_auc_neural)
xgb_valid_scores.append(valid_auc_xgb)

# Needed for creating dataframe of validation scores
fold_names = list(range(k))
fold_names.append('overall')

# Dataframe of validation scores
metrics2 = pd.DataFrame({'fold': fold_names,
                        'valid_lightgm': valid_scores,
                        'valid_xgb': xgb_valid_scores,
                        'valid_neural': neural_valid_scores,
                        'valid_randomf': clf_valid_scores}) 

#return submission, feature_importances, metrics
In [ ]:
final = list(metrics2.iloc[k][1:5].values)
#importance = lgbm.feature_importances_

if(final.index(max(final))==0):
  importance = lgbm.feature_importances_
  best_model = 'lightgm'
else:      
    if(final.index(max(final))==1):
      importance = lgbm.feature_importances_
      best_model = 'neural_net'
    else:   
        if(final.index(max(final))==2):
          importance = clf.feature_importances_
          best_model = 'randomf'
        else:
            if(final.index(max(final))==3):
              importance = xgb.feature_importances_
              best_model = 'xgboost'
              
importancia = pd.DataFrame(
  {'variaveis': features.columns,
   'peso': importance

  })
In [ ]:
configure_plotly_browser_state()
init_notebook_mode(connected=False)
import colorlover as cl
color_fold = '#a1c3d1'
#metrics2.drop(columns='fold', inplace = True)

lista = metrics2.columns.values.tolist()
lista = ['metrics2.' + s for s in lista]
lista1 = '[{}]'.format(', '.join(lista))

aux = metrics2.drop(columns='fold')
aux = round(aux,1)*10
aux = aux.astype(int)

lista2 = aux.columns.values.tolist()
lista2 = ['aux.' + s for s in lista2]
lista2 = ['np.array(colors)[' + s + ']' for s in lista2]
lista2.insert(0, 'color_fold')
lista2 = '[{}]'.format(', '.join(lista2))



colors = cl.scales['11']['div']['Spectral']
data = {'Color' : colors}
df = pd.DataFrame(data)


trace0 = go.Table(
  header = dict(
    values = metrics2.columns.values,
    line = dict(color = 'black'),
    fill = dict(color = '#a1c3d1'),
    align = ['center'],
    font = dict(color = 'black', size = 12)
  ),
  cells = dict(
    values = eval(lista1),
    line = dict(color = 'black'),
    fill = dict(color = eval(lista2)),
    align = 'center',
    font = dict(color = 'black', size = 11)
    ))

layout1 = dict(
    title='The best model was: '+best_model,
)



#data = [trace0]

#fig1 = dict(data=[table_trace1, trace1, trace2, trace3], layout=layout1)

fig1 = dict(data = [trace0], layout=layout1)

iplot(fig1, filename = "row variable color")

Model Benchmark

In [ ]:
configure_plotly_browser_state()
init_notebook_mode(connected=False)

lw = 2

trace0 = go.Scatter(x=fpr3, y=tpr3, 
                    mode='lines', 
                    line=dict(color='red', width=lw),
                    name='ROC curve: XGBOOST (area = %0.2f)' % round(metrics.auc(fpr3, tpr3),2)
                   )

trace1 = go.Scatter(x=fpr, y=tpr, 
                    mode='lines', 
                    line=dict(color='navy', width=lw),
                    name='ROC curve: Neural Net (area = %0.2f)' % round(metrics.auc(fpr, tpr),2)
                   )

trace2 = go.Scatter(x=fpr1, y=tpr1, 
                    mode='lines', 
                    line=dict(color='darkorange', width=lw),
                    name='ROC curve: Random Forest (area = %0.2f)' % round(metrics.auc(fpr1, tpr1),2)
                   )

trace3 = go.Scatter(x=[0, 1], y=[0, 1], 
                    mode='lines', 
                    line=dict(color='black', width=lw, dash='dash'),
                    name='ROC curve: Baseline (area = 0.5)')

trace4 = go.Scatter(x=fpr2, y=tpr2, 
                    mode='lines', 
                    line=dict(color='green', width=lw),
                    name='ROC curve: LIghtGBM (area = %0.2f)' % round(metrics.auc(fpr2, tpr2),2)
                   )


layout = go.Layout(title='Models Performance Benchmark: ROC',
                   xaxis=dict(title='False Positive Rate'),
                   yaxis=dict(title='True Positive Rate'))

fig = go.Figure(data=[trace0, trace1, trace2, trace3, trace4], layout=layout)

iplot(fig)
In [66]:
configure_plotly_browser_state()
init_notebook_mode(connected=False)
importancia = importancia.sort_values(by=['peso'], ascending=True)
importancia = importancia[importancia['peso']>30]

data = [go.Bar(
            x=importancia['peso'] ,
            y=importancia['variaveis'],
            orientation = 'h',
            
)]
layout = go.Layout(title= 'Feature Importance: '+best_model,
    autosize=False,
    width=900,
    height=500,
    margin=go.Margin(
        l=300
    )
)
fig = go.Figure(data=data, layout=layout)    

iplot(fig)

Salvando o melhor algoritmo treinado

In [208]:
lgbm.booster_.save_model('/content/drive/MyDrive/CALPM_DATASET/lgb_classifier.txt') 
Out[208]:
<lightgbm.basic.Booster at 0x7f59ea10e7f0>

Escrevendo a lista de features utilizada no modelo

In [209]:
features = pd.DataFrame(columns = valid_features.columns)
In [210]:
features.to_csv('/content/drive/MyDrive/CALPM_DATASET/features.csv',index=False, sep=';')

Validacao

Lendo o algoritmo treinado

In [211]:
lgbm_valid = lgb.Booster(model_file='/content/drive/MyDrive/CALPM_DATASET/lgb_classifier.txt')

Selecionando as colunas necessarias

In [212]:
df = test[['fl_optante_simples',
          'fl_matriz',
          'fl_spa',
          'fl_antt',
          'fl_veiculo',
          'fl_validade_pgfn',
          'fl_validade_fgts',
          'vl_total_veiculos_pesados_grupo',
          'vl_total_veiculos_leves_grupo',
          'fl_optante_simei',
          'fl_indicador_financeiro',
          'vl_potenc_cons_diesel_grupo',
          'vl_potenc_cons_gasolina_grupo',
          'fl_simples_irregular',
          'vl_total_veiculos_grupo',
          'fl_passivel_iss',
          'renda_censitaria_2010',
          'fl_empresa_contato_contador',
          'dt_abertura',
          'dh_processamento',
          'de_natureza_juridica',
          'sg_uf',
          'de_classif_natureza_juridica',
          'nm_segmento',
          'sg_uf_matriz',
          'de_precisao_geolocalizacao',
          'de_fl_optante_simples',
          'de_fl_optante_simei',
          'de_fl_simples_irregular',
          'nm_meso_regiao',
          'id']].copy()

Removendo os missings

In [213]:
df.replace('',np.nan, inplace=True)
In [215]:
remove_missing(df, 0,0)

Convertendo os tipos de variaveis

In [216]:
df.update(df.filter(regex='^fl_').astype(int))

Criandos as mesmas features do treino

In [217]:
df['ano_abertura']=df['dt_abertura'].str.split('-').str[0]

df['ano_processamento']=df['dh_processamento'].str.split('-').str[0]

df['tempo_empresa']= df['ano_processamento'].astype(int) - df['ano_abertura'].astype(int)
In [218]:
df.drop(['ano_abertura','ano_processamento'],axis=1, inplace=True)
In [219]:
dummy_features = pd.get_dummies(df[['de_natureza_juridica',
                                    'sg_uf',
                                    'de_classif_natureza_juridica',
                                    'nm_segmento',
                                    'sg_uf_matriz',
                                    'de_precisao_geolocalizacao',
                                    'de_fl_optante_simples',
                                    'de_fl_optante_simei',
                                    'de_fl_simples_irregular',
                                    'nm_meso_regiao']],dtype=int)

Gerando o dataset final para validacao

In [220]:
df_teste = df.select_dtypes(exclude=['object'])
In [221]:
df_final = pd.concat([df_teste,dummy_features], axis= 1)
In [222]:
df_final.shape
Out[222]:
(56912, 295)
In [223]:
df_final_id = df_final['id'].copy()
df_final.drop(['id'],axis=1, inplace=True)
In [224]:
aligned_features= pd.read_csv('/content/drive/MyDrive/CALPM_DATASET/valid_features.csv',sep=';').columns
In [225]:
df_final_validacao = df_final.reindex(columns = list(aligned_features), fill_value=0)
In [226]:
df_final_validacao.shape
Out[226]:
(56912, 301)

Aplicando o modelo treinado

In [227]:
scaled = pd.DataFrame(scaler.fit_transform(df_final_validacao))
scaled.columns = df_final_validacao.columns
x_scaled = scaled[scaled.columns[~scaled.columns.isin(['TARGET'])]]
In [228]:
valid_features = x_scaled
y_pred_en = lgbm.predict_proba(valid_features)
In [229]:
scaled = pd.DataFrame(scaler.fit_transform(df_final_validacao))
scaled.columns = df_final_validacao.columns

x_scaled = scaled[scaled.columns[~scaled.columns.isin(['TARGET'])]]

valid_features = x_scaled

y_pred_en = lgbm.predict_proba(valid_features)

Escrevendo o resultado da classificação no dataframe

In [230]:
dataset_result = pd.DataFrame({'id':df_final_id,
                              'y_predito':0,
                              'y_probabilidade':y_pred_en[:,1].round(2)})
In [231]:
dataset_result.loc[dataset_result['y_probabilidade']>0.5,'y_predito']=1
In [233]:
dataset_result.to_csv('/content/drive/MyDrive/CALPM_DATASET/predicted_dataset.csv',index=False, sep=';')